在C++中访问基类私有成员

Bug*_*boo 2 c++ inheritance class

我没有真正(非常)长时间使用C++,这个问题可能很愚蠢,但我真的可以使用一些帮助.

如果我的基类有一个私有数据成员,并且我的派生类是公开派生的,那么基类的私有成员不会被继承.但是,仍然可以通过继承的公共函数访问它们.例如:

class B{
int a,b;

public:
void SetA(int);
int GetA();
};

class D:public B{

public:
SetAAttribute(int x)
{ SetA(x); }

}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题如下:从技术上讲,派生类对象没有在它们上定义'a'属性.通俗地说,当基本上不存在属性时,我基本上在实体上设置属性.想象这样一个概念似乎不直观.我理解正确吗?

任何额外的解释或更正将不胜感激.

Mar*_*som 7

并不是该属性不再存在,只是它隐藏在你身上.基类方法仍然可以访问基类成员,因为它们不会相互隐藏.