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

时间:2012-05-01 02:58:20

标签: c++ class inheritance

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

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

class B{
int a,b;

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

class D:public B{

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

}

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

非常感谢任何额外的解释或更正。

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

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

相关问题