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

时间:2009-07-28 04:52:04

标签: c++ inheritance

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

1 个答案:

答案 0 :(得分:6)

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

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