为了账号安全,请及时绑定邮箱和手机立即绑定

公有继承问题

这道题有问题啊,明显的的描述是正确的,但是不能访问是一回事。所以正确答案应该是C, C可以改成B类从A类公共派生,那么A类的私有成员函数可以被B类继承但不能通过对象直接使用。

正在回答

3 回答

c++中私有成员可被继承但无法访问,有间接的方法证明:

#include <iostream>
using namespace std;

class A{
    int i;
    void privateFunc(){
        cout<<"this is a private function of base class"<<endl;
    }

public:
    A(){i=5;}
    int getI(){
        return i;
    }

    void usePrivateFunc(){
        privateFunc();
    }
};

class B:public A{
public:
    void printBaseI(){
        cout<<getI()<<endl;
    }
    void usePrivateFunction(){
        usePrivateFunc();
    }
};

int main(){
    B b;
    b.printBaseI();
}

子类B如果没有继承父类A的私有成员i,那么对象b通过继承下来的成员函数getl()便无法访问不能被继承的i。但结果是答案为5

0 回复 有任何疑惑可以回复我~

我在《JAVA编程思想》资料查到的是公有继承父类的私有成员或受保护成员可以被子类集成,但是在子类不可见也同样不可以访问使用。想用可以通过访问父类的成员函数去调用父类的数据成员。

0 回复 有任何疑惑可以回复我~

共有继承,父类的私有修饰下的成员函数和成员变量在子类为不可见,不能被子类继承,也不能使用

0 回复 有任何疑惑可以回复我~
#1

慕粉1026331268

可以继承,但不能直接使用,可以通过父类的公有函数来调用父类的私有成员
2019-02-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之继承篇
  • 参与学习       75188    人
  • 解答问题       251    个

继承,C++面向对象三大特征之一,通过编码实践方式讲解到操作层面

进入课程

公有继承问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号