#include<cstdio>
#include<iostream>
using namespace std;
class A
{
public:
int x;
};
class B: public A
{
};
int main()
{
B b;
b.x=5;
cout<<b.x<<endl;
return 0;
}
我有上面的代码。一切都还好。但是我想知道当我从类A继承类B时,在类B中声明的成员变量x也就像A或者类B一样只是获取访问权限到A类的成员变量x?
在两个不同的类中是否有两个具有相同名称的变量,或者只有一个变量,两个类的对象都可以访问它?
如果在两个不同的类中有两个不同的同名变量,那么为什么在声明派生类的对象时会调用基类的构造函数?
答案 0 :(得分:1)
创建派生类的对象时,基类子对象嵌入在派生类对象的内存布局中。所以,对于你的问题,只有变量才会成为派生对象的一部分。 因为,我们在这里只涉及非静态成员,每个派生对象都会在内存中获得其基类子对象。 创建基类对象时,它表示不同对象的不同内存,与之前创建的派生对象无关。
希望它澄清你的疑问!
这是一本了解C ++对象模型的好书: