class base{
private:
int a;
public:
int b;
void setData(){
a = 10; b = 5;
}
};
class derived: public base{
private:
int c;
public:
// b is inherited
};
void main(){
derived D1;
D1.setData();
}
我了解到私有(private)成员不会被继承。因此,私有(private)变量 a(在基类中)不存在于派生类对象中。我的问题是 当调用 D1.setData() 时,如果 a 不存在,它如何为 a 赋值? 我很确定我的这个概念是错误的,所以有人可以解释一下这是如何工作的吗?派生类对象创建时基类成员是否也创建了?
最佳答案
I learned that private members aren't inherited.
当然它们是继承的:否则,需要这些私有(private)变量的基类的所有成员函数都会被破坏。尽管继承类无法访问私有(private)成员,但基类保留对它们的完全访问权限。
Can some one explain how this works?
继承类 derived
的布局包括一个存储基类私有(private)成员 a
的地方。基类的所有方法都可以访问base::a
。同时,派生类仍然无法访问它:任何从 derived
访问 a
的尝试都会导致编译时错误。
关于c++ - 派生类对象是否包含基类的私有(private)成员?它在内存中是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29328149/