在C ++中,当一个类继承其他类时,如果我为子类创建一个对象,那么子类对象是否也会为超类的所有数据成员和成员函数创建内存?
答案 0 :(得分:6)
是的(虽然成员函数本身不需要需要内存... vtables是另一个问题,并且是每个类而不是每个实例) - 子类的一个实例“嵌入”,如果你愿意的话,一个超类。为简单起见,假设所有实例变量都是32位整数:如果超类有3并且子类又增加了2个,那么子类的每个实例将分配5 x 4 = 20个字节 - 为自己的实例变量分配8个,加上12个为超类的实例变量。 (如果游戏中有任何虚拟方法,则加上vtable指针的4个字节。)
那么,什么是问题 ......?