我知道的是,空類的大小是1,只是爲了符合不允許大小的對象(及其類)爲0的標準。在這裏,我得到了派生類D的大小爲2.爲什麼行爲在這種情況下是不同的 假設沒有數據成員或虛擬指針從類B和C繼承到D?爲什麼從兩個空類派生的空類的大小是2?
#include<iostream>
using namespace std;
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
int main() {
cout<<"Size of D is: "<<sizeof(D)<<endl;
return 0;
}
也許是因爲它由兩個大小爲1的基類組成? –
@o_weisman但實際上,這些基類的大小爲0,只是爲了每個對象被分配不同的內存,大小設置爲1,與D類的情況相同,這應該是什麼行爲。 – cbinder
@DrorMeirovich您提到的問題的參考資料是關於虛擬指針的,但在這種情況下,類是空白的,並且沒有涉及數據成員(包括虛擬指針)的繼承。 – cbinder