万能百科  > 所属分类  > 

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

有如下类定义: 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。

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签