2

我已经很长时间没有使用 C++ 了,这个问题可能很愚蠢,但我真的可以使用一些帮助。

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

class B{
int a,b;

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

class D:public B{

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

}

现在,我的问题如下:从技术上讲,派生类对象上没有定义“a”属性。用外行的话来说,我基本上是在一个实体上设置一个属性,而这些属性甚至根本不存在。想象这样一个概念似乎不直观。我理解正确吗?

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

4

2 回答 2

7

不是属性不存在了,只是对你隐藏了。基类方法仍然可以访问基类成员,因为它们没有相互隐藏。

于 2012-05-01T03:01:04.793 回答
2

私有基成员是继承的,如果您尝试访问它们,编译器只会给您一个错误,因为您不应该直接访问它们。

于 2012-05-01T03:01:54.143 回答