考虑下面的钻石情景:
class Base {
int x;
public:
virtual ~Base(){}
};
class Derived1 : virtual public Base {
int y;
};
class Derived2 : virtual public Base {
int z;
};
class Derived3 : public Derived1, public Derived2 {
int t;
};
现在,如果我添加另一个类 Derived4 ,它派生自 Derived 3 ,
class Derived4 : public Derived3 {
int s;
};
它的大小 32 (我假设 Derived3 + s的大小)。
我想知道 Derived4 中是否有虚拟指针?
如果我采用普通的类层次结构(没有菱形结构),那么如果基类具有虚函数,则所有派生类都具有vptrs。那么,为什么不在这种情况下?
我正在用GNU GCC编译器编译codeBlocks 12.11中的代码。
答案 0 :(得分:0)
由于Derived4没有添加任何虚拟函数或虚拟基类,除了从Derived3继承的内容之外,大小的唯一增加是成员s。