有如下类定义: c1ass MyBase{ int k; public: MyBase(int n=0):k(n){} int value()const{ retum k;} }; c1ass MyD

admin2019-06-12  37

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

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

答案A

解析 此题考查的是派生类对基类成员的访问。因为类中缺省的访问权限是私有,所以本题中MyBase类中定义的成员k是私有成员。派生类中的成员只能访问基类中的公有成员和保护成员,不能访问基类中的私有成员。所以派生类中函数getK()中的语句return k;是非法的。
转载请注明原文地址:https://jikaoti.com/ti/3JA0FFFM
0

最新回复(0)