子类是否分配了祖先的内存和方法?

2 c++ inheritance

在C++中,当一个类继承其他类时,如果我为子类创建一个对象,那么子类对象是否也会为超类的所有数据成员和成员函数创建内存?

Ale*_*lli 6

是的(虽然成员函数本身不需要内存... vtables是另一个问题,并且是每个类而不是每个实例) - 子类的实例"embeds",如果你愿意,其中一个超类.为简单起见,假设所有实例变量都是32位整数:如果超类有3并且子类又增加了2个,那么子类的每个实例将分配5 x 4 = 20个字节 - 为自己的实例变量分配8个,加上12个为超类的实例变量.(如果存在任何虚拟方法,则加上vtable指针的4个字节).

那么,问题是什么......?