当一个实例变量被继承时,在子类中改变它不会影响它在超类中的值,反之亦然。这意味着有两个实例变量。但是当我这样做时sizeof( sublcass )
,大小中只考虑了一个实例变量。那么是否有为超类创建的第二个对象?
这是一个小片段来说明我在说什么:
struct Super {
int x;
void func() {
cout << "SUPERCLASS" << endl;
cout << x << endl; /* prints garbage value */
x = 4;
cout << x << endl; /* prints 4 */
}
};
struct Sub : public Super {
void func() {
x = 10;
Super b;
b.func();
cout << "SUB" << endl;
cout << x << endl; /* prints 10 */
}
};
int main() {
Sub b;
b.func();
return 0;
}
输出:
SIZE: 4
SUPERCLASS
2867344
4
SUB
10