C語言不容許定義一個空的結構體,但在C++中,與結構體概念相同的類卻容許空定義,那這個空的類有沒有大小呢?
在sizeof(Test)以後咱們會發現,他的大小爲1個字節。那麼這個1字節是哪裏來的呢?其實在底層,系統都會爲空類分配1字節的空間大小,咱們知道空類能夠實例化,而每一個實例在內存中都有惟一的地址,分配1字節的空間是爲了實例化以後使這個類在內存有惟一的空間地址。而當類中放入成員後,這個1字節就會自動消失。
那麼另外一個問題來了,若是一個類被派生類繼承後,大小會是多少。按照正常思惟,空的基類大小爲1字節,空的子類大小也爲1字節,那繼承以後總大小應該是2字節。
可是在sizeof(SonTest)以後咱們會發現,派生類大小仍是一個字節。
那這個1字節究竟是基類的大小仍是派生類的呢?其實,它既非基類大小也非派生類大小,而是系統「施捨」給這對「空父子」的,能夠形象的理解爲,公司要留着這我的(類),而它肚子裏什麼都沒有(空類),因此公司要給他一個名分(1字節)。ide