有如下类定义: Class MyBase{ int k; public: MyBase(int n=0):k(n){} int value()eonst{retum k;} }; class MyDe

admin2021-06-10  27

问题 有如下类定义:
    Class MyBase{
    int k;
    public:
    MyBase(int n=0):k(n){}
    int value()eonst{retum k;}
    };
    class MyDerived:MyBase{
    int j;
    public:
    MyDerived(int i):j(i){}
    int getK()eonst{return k;}
    int getJ()eonst{retum j;}
    };   
    编译时发现有一处语法错误,对这个错误最准确的描述是(    )。

选项 A、函数getK试图访问基类的私有成员变量k
B、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private
C、类MyDerived缺少一个无参的构造函数
D、类MyDerived的构造函数没有对基类数据成员k进行初始化

答案A

解析 默认继承方式为私有继承,私有继承将基类的公用成员和保护成员都变为了私有成员,基类的私有成员依然属于基类私有,派生类不能访问基类的私有成员。所以A选项正确。   
转载请注明原文地址:https://kaotiyun.com/show/1Afp777K
0

最新回复(0)