假設我有類無數據:基類內的派生類的大小
struct Empty {
/*some methods here*/
};
而派生類
struct Derived: Empty {
int a;
int b;
char c;
....
}__attribute__((packed));`
空類的對象有派生類的大小= 1部分空通常有0尺寸。據我瞭解編譯器看到基地Empty類沒有數據,所以它可以優化空的大小的情況下,它是「內部」派生但它不需要由標準。
所以,問題是:
我可以採用某種確定在編譯時派生類的空白部分並沒有真正佔用內存。
據我所知,我可以做像sizeof(Derived) = sizeof(a) + sizeof(b) ...
這樣的檢查但它太冗長了,有幾個類像Derived。有更優雅的解決方案嗎?
爲什麼你想知道這一點?請注意,成員或基類可以佔用內存而不會增加派生類的佔用空間(通過使用填充的空間)。還要注意結構體上的'sizeof'可以小於或大於它的成員和基的'sizeof'之和。 – skyking
我將使用這些派生類來表示一些網絡數據。所以所有這樣的派生類將具有壓縮屬性。另外,我將繼承一些模板類來實現好奇的循環模板模式。這樣所有派生類將具有一些通用功能。不過,我不希望這種繼承會影響Derived類的佈局。 –