假设我有类无数据:基类内的派生类的大小
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类的布局。 –