在C++中访问基类私有成员
Accessing base class private members in C++
我已经很久没有使用C++了,这个问题可能很愚蠢,但我真的可以使用一些帮助。
如果我的基类具有私有数据成员,并且我的派生类是公开派生的,则不会继承基类的私有成员。但是,它们仍然可以通过继承的公共函数访问。例如:
class B{
int a,b;
public:
void SetA(int);
int GetA();
};
class D:public B{
public:
SetAAttribute(int x)
{ SetA(x); }
}
现在,我的问题如下:从技术上讲,派生类对象没有定义"a"属性。通俗地说,当属性一开始就不存在时,我基本上是在实体上设置属性。想象这样的概念似乎不直观。我理解正确吗?
任何额外的解释或更正将不胜感激。
并不是说这个属性不再存在,只是它对你隐藏了。基类方法仍然可以访问基类成员,因为它们彼此之间没有隐藏。
私有
基本成员是继承的,如果您尝试访问它们,编译器只会给您一个错误,因为您不应该直接访问它们。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何使用基类指针引用派生类成员
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 如果基类包含双指针成员,则派生类的构造函数
- 继承和友元函数,从基类访问受保护的成员
- 如何基于模板化类的基类专门化成员函数
- 基类中的默认析构函数禁用子类中的移动构造函数(如果有成员)
- 在派生类中使用基类的私有成员变量的最佳方法
- 为什么我需要在成员发起器列表中重复基类的模板参数?
- 继承:调用基类的成员和方法
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 当空基类也是成员变量时,为什么禁止空基优化?
- 引用基类模板的成员变量的简单方法
- 将基类的成员函数重载到其他派生类C++
- C++ 使用派生类方法更改基类数据成员
- 在成员构造函数之后调用基类构造函数
- 派生类看不到基类成员
- 使用派生类中的静态成员而不是基类
- 指向成员的 C++ 指针(指向成员基类的指针)
- 如何在c++中将模板成员函数的实参转发给成员基类指针