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

Accessing base class private members in C++

本文关键字:成员 基类 访问 C++      更新时间:2023-10-16

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

如果我的基类具有私有数据成员,并且我的派生类

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

class B{
int a,b;
public:
void SetA(int);
int GetA();
};
class D:public B{
public:
SetAAttribute(int x)
{ SetA(x); }
}

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

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

并不是说这个属性不再存在,只是它对你隐藏了。基类方法仍然可以访问基类成员,因为它们彼此之间没有隐藏。

私有

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