子类是否也在c ++中继承私有数据成员?但是可以通过超类的公共方法访问吗?

时间:2017-03-30 05:08:24

标签: c++ class inheritance

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

2 个答案:

答案 0 :(得分:1)

  

过去认为派生类不会继承超类私有数据成员和成员函数。

你的理解有点不妥。

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

答案 1 :(得分:1)

当其他类的私有数据成员设置为私有时,无法访问这些成员。

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

实施例

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