我有两个类 - 一个基类和一个派生自它:
class base {
int i ;
public :
virtual ~ base () { }
};
class derived : virtual public base { int j ; };
main()
{ cout << sizeof ( derived ) ; }
这里的答案是 16。但是如果我改为使用非虚拟公共继承或使基类非多态,那么我得到的答案是 12,即如果我这样做:
class base {
int i ;
public :
virtual ~ base () { }
};
class derived : public base { int j ; };
main()
{ cout << sizeof ( derived ) ; }
或者
class base {
int i ;
public :
~ base () { }
};
class derived : virtual public base { int j ; };
main()
{ cout << sizeof ( derived ) ; }
在这两种情况下,答案都是 12。
有人可以解释为什么派生类的大小在第一种和其他两种情况下有所不同吗?
(我在 code::blocks 10.05 工作,如果有人真的需要这个)