假设我有:
struct Foo: public Bar { .... }
Foo不介绍新的成员可变. Foo只引入了一堆成员函数&静态功能. C标准的任何部分现在都保证:
sizeof(Foo) == sizeof(Bar)
?
谢谢!
解决方法
我可以想到至少一个场景,其中sizeof(Foo)!= sizeof(Bar):
class Bar { public: int m_member; }; class Foo : Bar { virtual ~Foo(); };
Foo会有一个vtable指针,而Bar不会,而前者的大小将是Bar的一个字.在32位DEBUG MSVC2010:
sizeof(Foo) - 8 sizeof(Bar) - 4
编辑这适用于结构体和类,我重新进行测试以确认.