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

admin2009-03-16  33

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

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

答案A

解析 本题考查的是派生类对基类成员的访问。因为类中缺省的访问权限是私有的 (private),所以本题MyBase类中定义的成员k为私有成员。而派生类中的成员只能够访问墓类中的公有成员和保护成员,不能访问基类中的私有成员。所以,派生类中的函数getK()中的return k;语句是非法的。即函数getK()试图访问基类的私有成员变量k,故应该选择A。
转载请注明原文地址:https://jikaoti.com/ti/qTW0FFFM
0

最新回复(0)