C继承与派生类习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章继承与派生类

9. 2 典型例题分析与解答

例题1:下列对派生类的描述中,()是错误的。

A—个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类成员

D.派生类中继承的基类成员的访问权限到派生类保持不变

答案:D

分析:一个派生类可以作为另一个派生类的基类。无论是单继承还是多继承,派生类至少有一个基类。派生类的成员除了它自己的成员外,还包含了它的基类成员。派生类中继承的基类成员的访问权限到派生类受继承方式影响的,对于私有继承,基类的

public ,protected 成员在派生类中作为private 成员;对于公有继承,基类的public ,protected 成员在派生类中访问属性不变;对于保护继承,基类的

public 、protected 成员在派生类中作为protected 成员。

例题2:派生类的对象对它的哪一类基类成员是可以访问的()

A.公有继承的基类的公有成员

B.公有继承的基类的保护成员

C. 公有继承的基类的私有成员

D. 保护继承的基类的公有成员

答案: A

分析:公有继承的基类的公有成员在派生类中保持公有访问权限,所以派生类对象可以访问它;公有继承的基类的保护成员在派生类中保持保护访问权限,所以派生类对象不

可以访问它;基类的私有成员不能被派生到派生类中,所以派生类

对象不可以访问它;保护继承的基类的公有成员在派生类中变成保护的访问权限,所以派生类对象不可以访问它。

例题3:关于多继承二义性的描述,()是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二

义性

B.—个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公

共基类的访问可能出现二义性

C.解决二义性最常用的方法是作用域运算符对成员进行限定

D.派生类和它的基类中出现同名函数时,将可能出现二义性

答案:D

分析:出现二义性有两种情况:调用不同基类的相同成员时可能出现二义性;访

问共同基类的成员时可能出现二义性。消除二义性的方法是采用作用域运算符。

派生类和它的基类中出现同名函数时,不可能出现二义性。

例题4:多继承派生类构造函数构造对象时,()被最先调用。

A.派生类自己的构造函数

B.虚基类的构造函数

C.非虚基类的构造函数

D.派生类中子对象类的构造函数

答案:E

分析:多继承派生类构造函数构造对象时,构造函数的调顺序是:虚基类的构造函数,派生类中子对象类的构造函数, 派生类自己的构造函数。

例题5: C++类体系中,能被派生类继承的是()。

A.构造函数

B.虚函数

C.析构函数

D.友元函数

答案:E

分析:C++类体系中,构造函数、析构函数和友元函数是不能被派生类继承的. 例题6:设有

基类定义:

class Cbase

{private: i nt a;

protected: i nt b;

public: i nt c;

};

派生类采用何种继承方式可以使成员变量b成为自己的私有成员()

A.私有继承

B.保护继承

C.公有继承

D.私有、保护、公有均可

答案:A

分析:私有继承时,基类的protected成员在派生类中作为private成员。例题7:C++将类继承分为(])和(2 )两种。

答案:(1 )单继承(2 )多继承

分析:派生类可以只从一个基类中派生,也可以从多个基类中派生。从一个基类

中派生的继承方式称为单继承。从多个基类中派生的继承方式称为多继承。

例题8:派生类可以定义其___________________ 中不具备的数据和操作。

答案:基类

分析:派生类是从基类派生的,派生类包含了它所有基类的除构造函数、析构函数之外的所有成员,同时还拥有它自己的新成员。

例题9:派生类构造函数的初始化列表中包含__________________________________ (

答案:初始化基类数据成员、新增内嵌对象数据及新增一般成员数据所需要的全部参数。例题10:在继承机制下,当对象消亡时,编译系统先执行血的析构函数,然后才

执行(2h的析构函数,最后执行(3L的析构函数。

答案:(1)派生类(2)派生类中子对象类(3)基类

分析:派生类的析构函数的执行次序与构造函数正好相反,先调用派生类的析构

函数,再调用派生类中子对象类的析构函数,最后调用基类的析构函数。

例题11:设有以下类的定义:

class Aclass B: protected Aclass C: private B

{intA1;{int b1;{int c1;

protected/nt A2;protected: i nt b2;protected: i nt c2;

public:i nt A3;public: i nt b3;public: i nt c3;

};};};

请按访问权限写出派生类C中具有的成员。

私有成员:⑴

保护成员:(2)

公有成员:(3L。

答案:(1)c1、b2、b3、A2、A3(2)c2(3)c3

分析:E类有它自己的私有成员b1、保护成员b2和公有成员有b3,另外E类是

以保护方式从A类中派生出来的,所以A类保护成员A 2和公有成员A3在E类中都变成保护类型的;C类有自己的私有成员c1、保护成员c2和公有成员有c3,C类是以私有方式从B类中派生出来的,所以E类中的b2、b3、A2和A3在C类中都变成私有的访问方式。

例题12:指出并改正下面程序中的错误。

相关文档
最新文档