【问题标题】:Does the sub class inherit the private data members too in c++? But are accessed through the public methods of the super class?子类是否也继承了 C++ 中的私有数据成员?但是是通过超类的公共方法访问的吗?
【发布时间】:2017-03-30 05:08:23
【问题描述】:

我是 C++ 新手。我曾经相信超类的私有数据成员和成员函数不会被派生类继承。但最近我看到一个程序,其中超类的私有成员可以通过其公共成员函数访问。当派生类没有私有数据成员时怎么可能......?如果我错了,请清除我的概念。

【问题讨论】:

  • 有可能是因为子类是-a 超类。这就是继承的意思。因此它必须继承私有成员。
  • 所以你说它也继承了私有成员,但它们只对超类的公共方法可见?
  • 没错。更准确地说:它们只能在对象的静态类型被假定为超类的范围内访问。

标签: c++ class inheritance


【解决方案1】:

当一个类的私有数据成员设置为private时,其他类无法访问它们。

但是通过使用返回函数,子类可以从父类中检索私有数据成员。

例子

class Parent{
    int age = 35;

    public int getAge(){
        return age;
    }
}

class Child : public Parent{

}

int main(){
    Child c;
    printf("%d", c.getAge());
    return 0;
}

输出将是

35

【讨论】:

    【解决方案2】:

    曾经认为超类的私有数据成员和成员函数不被派生类继承。

    你的理解有点问题。

    私有成员仍然存在于基类中。派生类根本无法直接访问它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-01
      • 2018-06-14
      • 2014-11-27
      • 2015-10-26
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多