继承与派生练习题

合集下载

继承与派生练习题

继承与派生练习题

习题八第八章继承与派生1.下列对派生类的描述中,(D.派生类中继承的基类成员的访问权限到派生类保持不变)是错误的。

A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员D.派生类中继承的基类成员的访问权限到派生类保持不变2. 派生类的对象对它的哪一类基类成员是可以访问的?(A.公有继承的基类的公有成员)A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员D. 保护继承的基类的公有成员3. 关于多继承二义性的描述,(D.派生类和它的基类中出现同名函数时,将可能出现二义性)是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.解决二义性最常用的方法是作用域运算符对成员进行限定D.派生类和它的基类中出现同名函数时,将可能出现二义性4. 多继承派生类构造函数构造对象时,(B.虚基类的构造函数)被最先调用。

A.派生类自己的构造函数B.虚基类的构造函数C.非虚基类的构造函数 D.派生类中子对象类的构造函数5. C++类体系中,能被派生类继承的是( B.虚函数)。

A.构造函数 B.虚函数 C.析构函数 D.友元函数6. 设有基类定义:class Cbase{ private: int a;protected: int b;public: int c;};派生类采用何种继承方式可以使成员变量b成为自己的私有成员(A. 私有继承)A. 私有继承B.保护继承C. 公有继承D.私有、保护、公有均可7. 指出下列对定义重载函数的要求中,哪些是错误的提法。

A.要求参数的个数不同B. 要求参数中至少有一个类型不同。

A.要求参数的个数不同。

B.要求参数中至少有一个类型不同。

C.不要求函数的返回值不同。

继承与派生习题

继承与派生习题

一、选择填空1.下列对派生类的描述中,()是错的。

A.一个派生类可以作另一个派生类的基类;B.派生类至少有一个基类;C.派生类的成员除了它自己的成员外,还包含了它的基类的成员;D.派生类中继承的基类成员的访问权限到派生类保持不变。

2.派生类的对象对它的基类成员中()是可以访问的。

A.公有继承的公有成员;B.公有继承的私有成员;C.公有继承的保护成员;D.私有继承的公有成员。

3.派生类的构造函数的成员初始化列表中,不能包含()。

A.基类的构造函数;B.派生类中对象成员的初始化;C.基类的对象成员的初始化;D.派生类中一般数据成员的初始化。

4.设置虚基类的目的是()A.简化程序;B.消除二义性;C.提高运行效率D.减少目标代码5. C++类体系中,能被派生类继承的是()。

A.构造函数B.虚函数C.析构函数D.友元函数6.设有基类定义:class Cbase{ private: int a;protected: int b;public: int c;};派生类采用何种继承方式可以使成员变量b成为自己的私有成员( )A. 私有继承B.保护继承C. 公有继承D.私有、保护、公有均可7. 设有如下程序:#include<iostream.h>class A{ public: int i;display() { cout<<”class A\n”; }};class B{public: int i;display() { cout<<”cla ss B\n”; }};class C: public: A, public B{ int j;public:int i;show(){j=i*i; display();}};void main(){C demo;demo.show();}主程序运行时将( )A. 因变量i的重复定义而报错B. 因对象demo间接调用display函数时产生歧义性而报错C. 因类定义的语法错而不能运行D. 没有语法错,正常输出结果8 若要用派生类的对象访问基类的保护成员,以下观点正确的是( )A.不可能实现B.可采用保护继承C.可采用私有继承D.可采用公有继承二.填空题1.派生类可以定义其_______________中不具备的数据和操作。

继承与派生习题

继承与派生习题

C++讲义-第九章习题一.选择题1.下列对派生类的描述中,错误的是()A.一个派生类可以作为另一个派生类的基类。

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

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

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

2.派生类的对象对它的基类成员中,可以访问的是()A.公有继承的公有成员。

B.公有继承的私有成员。

C.公有继承的保护成员。

D.私有继承的公有成员。

3.对基类和派生类的关系描述中,错误的是()A.派生类是基类的具体化。

B.派生类是基类的子集。

C.派生类是基类定义的延续。

D.派生类是基类的组合。

4.派生类的构造函数的成员初始化列表中,不能包含的是()A.基类的构造函数。

B.派生类中子对象的初始化。

C.基类的子对象初始化。

D.派生类中一般数据成员的初始化。

5.关于子类型的描述中,错误的是()A.子类型就是指派生类是基类的子类型。

B.一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型。

C.在公有继承下,派生类是基类的子类型。

D.子类型关系是不可逆的。

6.关于多继承二义性的描述中,错误的是()A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。

B.解决二义性的常用方法是对成员名进行类名限定。

C.基类和派生类中同时出现的同名函数,也存在二义性问题。

D.一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性。

7.设置虚基类的目的是()A.简化程序B.消除二义性C.提高运行效率D.减少目标代码8.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化的次数为()A.与虚基类下面的派生类个数有关。

B.多次C.二次D.一次9.C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过(),派生出新的类。

继承和派生测试题

继承和派生测试题

继承和派生练习选择题单选题1.下列虚基类的声明中,正确的是()。

A. class virtual B:public AB. virtual class B:public AC. class B:public A virtualD. class B: virtual public A2.C++类体系中,不能被派生类继承的有()。

A. 构造函数B. 虚函数C. 静态成员函数D. 赋值操作函数3.下列说法错误的是()。

A. 公有继承的基类中的public成员在派生类中仍是public的B. 公有继承的基类中的private成员在派生类中仍是private的C. 私有继承的基类中的public成员在派生类中变成private的D. 保护继承的基类中的public成员在派生类中变成protected的4.下列对继承的描述中,错误的是()。

A. 析构函数不能被继承B. 派生类也是基类的组合C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员D. 派生类中继承的基类成员的访问权限到派生类保持不变5.下列对基类和派生类关系的描述中,错误的是()。

A. 派生类是基类的具体化B. 派生类是基类的子集C. 派生类是基类定义的延续D. 派生类是基类的组合6.C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。

A. 复用B. 继承C. 封装D. 引用7.C++类体系中,能被派生类继承的是()。

A. 构造函数B. 虚函数C. 析构函数D. 友元函数8.关于多继承二义性的描述,()是错误的。

A. 派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B. 一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C. 解决二义性最常用的方法是作用域运算符对成员进行限定D. 派生类和它的基类中出现同名函数时,将可能出现二义性9.下列对派生类的描述中,()是错误的。

继承与派生习题

继承与派生习题

1.概念填空题1.1在C++中,三种派生方式的说明符号为、、不加说明,则默认的派生方式为。

1.2当公有派生时,基类的公有成员成为派生类的;保护成员成为派生类的;私有成员成为派生类的。

当保护派生时,基类的公有成员成为派生类的;保护成员成为派生类的;私有成员成为派生类的。

1.3 派生类的构造函数一般有3项工作要完成:首先,其次,最后。

1.4多继承时,多个基类中的同名的成员在派生类中由于标识符不唯一而出现。

在派生类中采用或来消除该问题。

2.选择题2.1下面对派生类的描述中,错误的是()。

A.一个派生类可以作为另外一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变2.2下列对友元关系叙述正确的是()。

A.不能继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率2.3当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象来直接访问。

A.任何成员B.公有成员和保护成员C.公有成员和私有成员D.私有成员2.4在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。

A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针2.5有如下类定义:class MyBASE{int k;public:void set(int n) {k=n;}int get( ) const {return k;}};class MyDERIVED: protected MyBASE{protected;int j;public:void set(int m,int n){MyBASE::set(m);j=n;}int get( ) const{return MyBASE::get( )+j;}};则类MyDERIVED中保护成员个数是(B)。

C++(练习)第8章,继承与派生

C++(练习)第8章,继承与派生

C++(练习)第8章,继承与派生一,单选题1.下列描述中错误的是( )。

A 继承分为多重继承和单继承B 对象间通信靠传递消息实现C 在外面看不到对象的内部特征是基于对象的"模块独立性好"这个特征D 类是具有共同属性、共同方法的对象的集合参考答案C2. 设有以下定义:#includeclass A1{public:void show1() { cout<<"class A1"<<="">};class A2: public A1{public:void show2( ) { cout<<"class A2"<<="">};class A3: protected A2{public:void show3( ) { cout<<"class A3"<<="">};void main(){A1 obj1;A2 obj2;A3 obj3;...}以下不合法的调用语句是( )。

A obj1.show1();B obj2.show1();C obj3.show1();D obj2.show2();参考答案C3. 下列描述中哪个是正确的__________。

A 私有派生的子类无法访问父类的成员B 类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的C 私有派生类不能作为基类派生子类D 私有派生类的所有子孙类将无法继续继承该类的成员参考答案B4. 下面有关派生类的说法中,错误的是( )。

A 一个派生类可以作为另一个派生类的基类B 一个派生类可以有多个基类C 派生类构造函数可以将初始化参数值传递给基类的构造函数和对象成员的构造函数D 具有继承关系时,基类成员在派生类中的访问权限不变参考答案D5. 设置虚基类的目的是( )。

继承与派生习题

继承与派生习题

继承与派生习题C++讲义-第九章习题一.选择题1.下列对派生类的描述中,错误的是()A.一个派生类可以作为另一个派生类的基类。

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

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

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

2.派生类的对象对它的基类成员中,可以访问的是()A.公有继承的公有成员。

B.公有继承的私有成员。

C.公有继承的保护成员。

D.私有继承的公有成员。

3.对基类和派生类的关系描述中,错误的是()A.派生类是基类的具体化。

B.派生类是基类的子集。

C.派生类是基类定义的延续。

D.派生类是基类的组合。

4.派生类的构造函数的成员初始化列表中,不能包含的是()A.基类的构造函数。

B.派生类中子对象的初始化。

C.基类的子对象初始化。

D.派生类中一般数据成员的初始化。

5.关于子类型的描述中,错误的是()A.子类型就是指派生类是基类的子类型。

B.一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型。

C.在公有继承下,派生类是基类的子类型。

D.子类型关系是不可逆的。

6.关于多继承二义性的描述中,错误的是()A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。

B.解决二义性的常用方法是对成员名进行类名限定。

C.基类和派生类中同时出现的同名函数,也存在二义性问题。

D.一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性。

7.设置虚基类的目的是()A.简化程序 B.消除二义性C.提高运行效率 D.减少目标代码8.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化的次数为()A.与虚基类下面的派生类个数有关。

B.多次第 1 页共 15 页C.二次 D.一次9.C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过(),派生出新的类。

习题9-继承和派生

习题9-继承和派生

习题9 继承和派生一、单项选择题1、C++语言建立类族是通过()实现的。

A、类的嵌套B、虚函数C、类的继承D、抽象类2、继承具有(),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

A、规律性B、传递性C、重复性D、多样性3、下列对基类和派生类关系的描述中,错误的是()。

A、派生类是基类的具体化B、派生类是基类的子集C、派生类是基类定义的延续D、派生类是基类的组合4、下列对派生类的描述中,错误的是()。

A、一个派生类可以作为另一个派生类的基类B、派生类至少有一个基类C、派生类的缺省继承方式是privateD、派生类只继承了基类的公有成员和保护成员5、下列关于继承的描述中,错误的是()。

A、析构函数不能被继承B、派生类是基类的组合C、派生类的成员除了它自己的成员外,还包含了它的基类的成员D、派生类中继承的基类成员的访问权限到派生类保持不变6、派生类的对象对它的基类成员中()是可以访问的。

A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的公有成员7、下列说法中错误的是()。

A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中仍是private的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的8、下面叙述错误的是()。

A、基类的protected成员在派生类中仍然是protected的B、基类的protected成员在public派生类中仍然是protected的C、基类的protected成员在private派生类中是private的D、基类的protected成员不能被派生类的对象访问9、下面叙述错误的是()。

A、对基类成员的访问能力在private派生类中和public派生类中是相同的B、基类的private成员在public派生类中不可访问C、基类中的public成员在protected派生类中是protected的D、基类中的public成员在protected派生类中仍然是public的10、C++体系中,不能被派生类继承的有()。

继承与派生练习题

继承与派生练习题

习题八第八章继承与派生1.下列对派生类的描述中,(D.派生类中继承的基类成员的访问权限到派生类保持不变)是错误的。

A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员D.派生类中继承的基类成员的访问权限到派生类保持不变2. 派生类的对象对它的哪一类基类成员是可以访问的?(A.公有继承的基类的公有成员)A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员D. 保护继承的基类的公有成员3. 关于多继承二义性的描述,(D.派生类和它的基类中出现同名函数时,将可能出现二义性)是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.解决二义性最常用的方法是作用域运算符对成员进行限定D.派生类和它的基类中出现同名函数时,将可能出现二义性4. 多继承派生类构造函数构造对象时,(B.虚基类的构造函数)被最先调用。

A.派生类自己的构造函数B.虚基类的构造函数C.非虚基类的构造函数 D.派生类中子对象类的构造函数5. C++类体系中,能被派生类继承的是( B.虚函数)。

A.构造函数 B.虚函数 C.析构函数 D.友元函数6. 设有基类定义:class Cbase{ private: int a;protected: int b;public: int c;};派生类采用何种继承方式可以使成员变量b成为自己的私有成员(A. 私有继承)A. 私有继承B.保护继承C. 公有继承D.私有、保护、公有均可7. 指出下列对定义重载函数的要求中,哪些是错误的提法。

A.要求参数的个数不同B. 要求参数中至少有一个类型不同。

A.要求参数的个数不同。

B.要求参数中至少有一个类型不同。

C.不要求函数的返回值不同。

第3章-继承和派生习题

第3章-继承和派生习题

《面向对象程序设计》习题班级:__________ 学号: ________ 姓名: _________ 名单序号:_______ 成绩:________第3章继承与派生一、选择题(共28分,每题1分)1 •下列对派生类的描述中,()是错误的。

A • 一个派生类可以作为另一个派生类的基类B •派生类至少有一个基类C •派生类的成员除了它自己的成员外,还包含了它的基类成员D •派生类中继承的基类成员的访问权限到派生类保持不变2•派生类的对象对它的哪一类基类成员是可以访问的?()A •公有继承的基类的公有成员 B.公有继承的基类的保护成员C.公有继承的基类的私有成员D.保护继承的基类的公有成员3 •关于多继承二义性的描述,()是错误的。

A •派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B •一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C •解决二义性最常用的方法是作用域运算符对成员进行限定D •派生类和它的基类中出现同名函数时,将可能出现二义性4 •多继承派生类构造函数构造对象时,()被最先调用。

A •派生类自己的构造函数B•虚基类的构造函数C•非虚基类的构造函数 D •派生类中子对象类的构造函数5 • C++类体系中,能被派生类继承的是()。

A. 构造函数B.虚函数C •析构函数 D •友元函数6 •设有基类定义:class Cbase{ private: int a;protected: int b;public: int c;};派生类采用何种继承方式可以使成员变量b成为自己的私有成员()A. 私有继承B.保护继承C.公有继承D.私有、保护、公有均可7 • C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。

A. 复用B.继承C.封装D.引用&继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

第二次练习-继承与派生

第二次练习-继承与派生

计算机1103 xx x号一.填空题1.类有2种用法:一是类的实例化,即生成类的对象;另一种是通过继承,派生出新类。

2.类A继承了类B,则类A称为子类,类B称为父类。

3.C++语言提供的多继承机制允许一个派生类继承多个基类,即使这些类相互无关。

二.判断1.在派生类的构造函数的初始化表中不能对包含基类的子对象初始化。

(f)2.一个派生类可以作为另一个类的基类。

(t)3.派生类至少一个基类。

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

(t)5.派生类的对象可以对它的基类成员中公有继承的保护成员进行访问。

(f)6.设置虚基类的目的是为了减少程序中的代码。

(f)7.派生类的构造函数执行顺序是:对象成员的构造函数,基类的构造函数,派生类本身的构造函数。

(f)8.基类的私有成员不能为派生类的成员所访问。

(t)9.基类的公有成员在私有继承时成为派生类的私有成员,而在保护继承是则成为派生类的保护成员。

(t)10.在公有和保护继承方式下,派生类的成员可以对基类的保护成员进行访问。

(t)11.在公有和保护继承方式下,派生类的对象可以对基类的保护成员进行访问。

(f)三.程序分析,根据程序写出结果。

1. #include <iostream>using namespace std;class Base{public:Base( ){cout<<”基类构造函数”<<endl;}~Base( ){cout<<”基类析构函数”<<endl;}};class Derive:public Base{Derive( ){cout<<”派生类构造函数”<<endl;}~ Derive( ){cout<<”派生类析构函数”<<endl;}};main( ){ Derive *p=new Derive;delete p;}基类构造函数派生类构造函数派生类析构函数基类析构函数2.#include <iostream>using namespace std;class A{protected: int x;public: A(int x){A::x=x;cout<<"class A"<<endl;}};class B{private: A a1;public: B(int x):a1(x){cout<<"class B"<endl;}};class C:public B{private: A a2;public: C(int x):B(x),a2(x){cout<<"class C"<endl;}};class D:public C{public: D(int x):C(x){cout<<"class D"<endl;}};void main( ){D doobj(10);}class Aclass Bclass Aclass Cclass D3.#include <iostream>using namespace std;class Base{private:int a,b;public: Base(int i,int j){a=i;b=j;}void move(int x,int y){a+=x;b+=y;}void show(){cout<<"a="<<a<<",b="<<b<<endl;} };class Derive:private Base{private: int x,y;public: Derive(int i,int j,int k,int l):Base(i,j){x=k;y=l;}void show(){cout<<"x="<<x<<",y="<<y<<endl;}void fun(){move(3,5);}void showbase(){Base::show();}};void main(){Base b(1,2);b.show();Derive d(3,4,5,6);d.fun();d.show();d.showbase();}a=1,b=2x=5,y=6a=6,b=95.#include <iostream>using namespace std;class A{public:A(char *s){cout<<s<<endl;}};class B:public A{public: B(char *s1,char *s2):A(s1){cout<<s2<<endl;}};class C:public A{public: C(char *s1,char *s2):A(s1){cout<<s2<<endl;}};class D:public B,C{public:D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s3,s4){cout<<s4<<endl;} };void main(){D d("class A","class B","class c","class D");}class Aclass Bclass cclass Dclass D6.#include <iostream>using namespace std;class A{public:A(char *s){cout<<s<<endl;}};class B:virtual public A{public: B(char *s1,char *s2):A(s1){cout<<s2<<endl;}};class C:virtual public A{public: C(char *s1,char *s2):A(s1){cout<<s2<<endl;}};class D:public B,C{public:D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s3,s4),A(s1){cout<<s4<<endl;}};void main(){D d("class A","class B","class c","class D");}class Aclass Bclass Dclass D四.程序填空有一个Furniture类,Bed类和Sofa类是其公有继承的派生类,Sleepersofa类是Bed和Sofa 的公有派生类,为使程序中的多重继承关系不出现模糊性,将正确内容填在线上。

第3章继承和派生习题

第3章继承和派生习题
4.多继承派生类构造函数构造对象时,()被最先调用。
A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数D.派生类中子对象类的构造函数
5.C++类体系中,能被派生类继承的是( )。
A.构造函数B.虚函数C.析构函数D.友元函数
6.设有基类定义:
class Cbase
{ private:inta;
A.简化程序B.消除二义性C.提高运行效率D.减少目标代码
25.下列虚基类的声明中,正确的是()。
A.classvirtual B:public AB.virtual classB:publicA
C.class B:publicAvirtualD.class B:virtual public A
26.若要用派生类的对象访问基类的保护成员,以下观点正确的是()
第3章-继承和派生习题
———————————————————————————————— 作者:
———————————————————————————————— 日期:
《面向对象程序设计》习题
班级:学号:姓名:名单序号:成绩:
第3章继承与派生
一、选择题(共28分,每题1分)
1.下列对派生类的描述中,()是错误的。
19.C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。
A.复用B.继承C.封装D.引用
20.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A.规律性B.传递性C.重复性D.多样性
21.下列对继承的描述中,错误的是()。
3.关于多继承二义性的描述,()是错误的。

继承与派生习题

继承与派生习题

继承与派生习题集1、如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是( D )A)public和public B)public和protectedC)protected和public D)protected和protected解析:根据课本中定义,当派生类以protected方式继承基类时,则原基类的protected成员和public成员在派生类中的访问属性分别是protected和protected。

2、派生类的成员函数不能访问基类的( C )A)公有成员和保护成员B)公有成员C)私有成员D)保护成员解析:基类的私有成员无论以何种方式继承,在派生类中都是不可访问的。

3、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是(C )A)派生类的对象可以赋给基类的对象B)派生类的对象可以初始化基类的引用C)派生类的对象可以直接访问基类中的成员D)派生类的对象的地址可以赋给指向基类的指针解析:基类与派生类对象可以相互转换,(1)派生类对象可以向基类对象赋值;(2)派生类对象可以向基类对象的引用进行赋值或初始化;(3)派生类对象的地址可以赋给指向基类对象的指针变量;(4)如果函数的参数是基类对象或基类对象的引用,相应得实参可以用子类对象。

4、在一个派生类对象结束其生命周期时(A)A)先调用派生类的析构函数后再调用基类的析构函数B)先调用调用基类的析构函数后再调用派生类的析构函数C)如果基类没有定义析构函数,则只调用派生类的析构函数D)如果派生类没有定义析构函数,则只调用基类的析构函数解析:在派生类对象释放时,先执行派生类析构函数,再执行其基类析构函数。

5、在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。

已知有如下类定义:class Base{ protected:void fun() {} };class Derived:Base {};则Base类中的成员函数fun() ,在Derived类中的访问权限是(A)A)private B)public C)friend D)protected解析:由于是私有继承,则基类中的保护成员在私有派生类中的访问属性为私有。

继承与派生练习题

继承与派生练习题

继承与派生练习题习题八第八章继承与派生1.下列对派生类的描述中,(D.派生类中继承的基类成员的访问权限到派生类保持不变)是错误的。

A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员D.派生类中继承的基类成员的访问权限到派生类保持不变2. 派生类的对象对它的哪一类基类成员是可以访问的?(A.公有继承的基类的公有成员)A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员D. 保护继承的基类的公有成员3. 关于多继承二义性的描述,(D.派生类和它的基类中出现同名函数时,将可能出现二义性)是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.解决二义性最常用的方法是作用域运算符对成员进行限定D.派生类和它的基类中出现同名函数时,将可能出现二义性4. 多继承派生类构造函数构造对象时,(B.虚基类的构造函数)被最先调用。

A.派生类自己的构造函数B.虚基类的构造函数C.非虚基类的构造函数 D.派生类中子对象类的构造函数5. C++类体系中,能被派生类继承的是( B.虚函数)。

A.构造函数 B.虚函数 C.析构函数 D.友元函数6. 设有基类定义:class Cbase{ private: int a;protected: int b;public: int c;};派生类采用何种继承方式可以使成员变量b成为自己的私有成员(A. 私有继承)A. 私有继承B.保护继承C. 公有继承D.私有、保护、公有均可7. 指出下列对定义重载函数的要求中,哪些是错误的提法。

A.要求参数的个数不同B. 要求参数中至少有一个类型不同。

A.要求参数的个数不同。

B.要求参数中至少有一个类型不同。

C.不要求函数的返回值不同。

c++继承与派生习题

c++继承与派生习题

};
class B {public:B( ) {cout<<”B”;} };
class C: public A{
B b;
public:
C( ) {cout<<”C”;}
};
int main( ) {C obj; return 0;}
执行后的输出结果是(
)。
A.CBA
B.Bቤተ መጻሕፍቲ ባይዱC
C.ACB
D.ABC
3.8 类 O 定义了私有函数 F1。P 和 Q 为 O 的派生类,定义为 class P: protected O{…}; class
3.10 有如下程序:
#include<iostream>
using namespace std;
class Base{
private:
void fun1( ) const {cout<<”fun1”;}
protected:
void fun2( ) const {cout<<”fun2”;}
public:
int get( ) const{return MyBASE::get( )+j;}
};
则类 MyDERIVED 中保护成员个数是( )。
A.4
B.3
C.2
D.1
3.7 程序如下:
#include<iostream>
using namespace std;
class A {
public:
A( ) {cout<<”A”;}
C.是一个类的成员函数与另一个类的关系
D.提高程序的运行效率
3.3 当保护继承时,基类的(

继承与派生类C试题

继承与派生类C试题

继承与派生‎类知识要点1.1.掌握继承和‎派生的定义‎,派生类的定‎义方法。

(1)掌握继承的‎两种类型:单继承和多‎继承。

(2)掌握pri‎v ate,publi‎c,prote‎c ted三‎种继承方式‎的特点。

继承方式决‎定了基类中‎的成员在派‎生类中的属‎性。

三种继承方‎式的共同点‎:基类的pr‎ivate‎成员在派生‎类中不可见‎。

区别:对于私有继‎承,基类的pu‎blic、prote‎c ted成‎员在派生类‎中作为pr‎ivate‎成员;对于公有继‎承,基类的pu‎b lic、prote‎c ted成‎员在派生类‎中访问属性‎不变;对于保护继‎承,基类的pu‎blic、prote‎c ted成‎员在派生类‎中作为pr‎otect‎e d成员。

(3)掌握派生类‎中的构造函‎数和析构函‎数的使用。

基类的构造‎函数和析构‎函数不能继‎承,所以必要时‎在派生类中‎定义自己的‎构造函数和‎析构函数。

派生列的构‎造函数完成‎基类中新增‎数据成员和‎基类数据成‎员的初始化‎,基类数据成‎员的初始化‎通过基类构‎造函数来实‎现。

(4)掌握派生类‎的同名覆盖‎规则。

(5)掌握赋值兼‎容规则。

基类对象可‎以使用公有‎派生类对象‎来代替,包括:派生类对象‎可以赋值给‎基类对象;派生类对象‎可以初始化‎基类对象的‎引用;基类类型指‎针可以指向‎派生类对象‎。

2.2.掌握多重继‎承的概念、定义方法、多重继承派‎生类构造函‎数的执行顺‎序。

派生类构造‎函数的执行‎顺序是先执‎行所有基类‎的构造函数‎(顺序按照定‎义派生类时‎指定的各基‎类顺序),在执行对象‎成员所在类‎的构造函数‎(顺序按照他‎们在类中的‎声明顺序),最后执行派‎生类构造函‎数体中的内‎容。

3.3.掌握虚基类‎的概念和定‎义方法。

在多重继承‎中,如果多条继‎承路径上有‎一个公共的‎基类,则在这些路‎径的汇合点‎上的派生类‎会产生来自‎不同路径的‎公共基类的‎多个拷贝,如果用vi‎rtual‎把公共基类‎定义成虚基‎类,则只会保留‎公共基类的‎一个拷贝。

继承和派生复习

继承和派生复习

继承和派生练习一、选择题1、关于保护继承,下列说法错误的是()。

A、保护继承的特点是基类的所有公用成员和保护成员都成为派生类的保护成员。

B、派生类对象不能访问基类中的任何成员。

C、派生类的对象可以访问基类的公有成员。

D、保护继承的派生类和私有继承的派生类,对基类成员访问属性是相同的。

2、关于私有继承,下列说法错误的是()。

A、基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问他们。

B、基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员不能直接访问他们。

C、基类的私有成员,派生类的成员和派生类的对象都无法访问。

D、派生类的对象无法访问基类的所有成员。

3、在公有继承中,基类中的保护成员作为派生类的()。

A、公有成员B、私有成员C、保护成员D、私有成员函数4、基类()在派生类中的性质和继承的性质一样。

A、公有成员B、私有成员C、保护成员D、私有成员函数5、派生类的对象对它的基类成员中的()是可以访问的。

A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的私有成员6、C++类体系中,不能被派生类继承的有()。

A、构造函数B、虚函数C、静态成员函数D、赋值操作函数7、下列说法错误的是()。

A、公有继承的基类中的public成员在派生类中仍是public的B、公有继承的基类中的private成员在派生类中仍是private的C、私有继承的基类中的public成员在派生类中变成private的D、保护继承的基类中的public成员在派生类中变成protected的8、下列对继承的描述中,错误的是()。

A、析构函数不能被继承B、派生类也是基类的组合C、派生类的成员除了它自己的成员外,还包含了它的基类的成员D、派生类中继承的基类成员的访问权限到派生类保持不变9、下列对基类和派生类关系的描述中,错误的是()。

A、派生类是基类的具体化B、派生类是基类的子集C、派生类是基类定义的延续D、派生类是基类的组合10、C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。

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

继承与派生练习题
习题八
第八章继承与派生
1.下列对派生类的描述中,(D.派生类中继承的基类成员的访问权限到派生类保持不变
)是错误的。

A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
2. 派生类的对象对它的哪一类基类成员是可以访问的?(A.公有继承的基类的公有成员)
A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员
C. 公有继承的基类的私有成员
D. 保护继承的基类的公有成员
3. 关于多继承二义性的描述,(D.派生类和它的基类中出现同名函数时,将可能出现二义性
)是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性
C.解决二义性最常用的方法是作用域运算符对成员进行限定
D.派生类和它的基类中出现同名函数时,将可能出现二义性
4. 多继承派生类构造函数构造对象时,(B.虚基类的构造函数)被最先调用。

A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数 D.派生类中子对象类的构造函数
5. C++类体系中,能被派生类继承的是( B.虚函数)。

A.构造函数 B.虚函数 C.析构函数 D.友元函数
6. 设有基类定义:
class Cbase
{ private: int a;
protected: int b;
public: int c;
};
派生类采用何种继承方式可以使成员变量b成为自己的私有成员(A. 私有继承)
A. 私有继承
B.保护继承
C. 公有继承
D.私有、保护、公有均可
7. 指出下列对定义重载函数的要求中,哪些是错误的提法。

A.要求参数的个数不同 B. 要求参数中至少有一个类型不同。

A.要求参数的个数不同。

B.要求参数中至少有一个类型不同。

C.不要求函数的返回值不同。

D. 要求参数的个数相同时,参数类型不同。

8. 下面关于友元的描述中,错误的是(D.要求参数中至少有一个类型不同。

)。

A.友元函数可以访问该类的私有数据成员
B.一个类的友元类中的成员函数都是这个类的友元函数
C.友元可以提高程序的运行效率
D.类与类之间的友元关系可以继承
A.9. 下述静态成员的特性中,(D.静态数据成员不是所有对象所共有的
)是错误的。

B.静态成员函数不能利用this指针
C.静态数据成员要在类体外进行初始化
D.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
E.静态数据成员不是所有对象所共有的
10. 在下面的表达式中,不表示虚继承的是( C.public )。

A.virtual public
B.public virtual
C.public
D. virtual
11. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过( B.继承)派生了新的类。

A.复用
B.继承
C.封装
D.引用
12. 继承具有( B.传递性),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

A)规律性 B.传递性 C.重复性 D.多样性
13. 下列对派生类的描述中,错误的是(D.派生类只含有基类的公有成员和保护成

)。

A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的缺省继承方式是private
D.派生类只含有基类的公有成员和保护成员
14. 下列对继承的描述中,错误的是( D.派生类中继承的基类成员的访问权限到
派生类保持不变
)。

A.析构函数不能被继承
B.派生类也是基类的组合
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
15. 派生类的对象对它的基类成员中(A.公有继承的公有成员)是可以访问的。

A.公有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.私有继承的公有成员
16. 下列说法错误的是( B.公有继承的基类中的private成员在派生类中仍是private的
)。

A.公有继承的基类中的public成员在派生类中仍是public的
B.公有继承的基类中的private成员在派生类中仍是private的
C.私有继承的基类中的public成员在派生类中变成private的
D.保护继承的基类中的public成员在派生类中变成protected的
17. 下面叙述错误的是(A.基类的protected成员在派生类中仍然是protected )。

A.基类的protected成员在派生类中仍然是protected
B.基类的protected成员在public派生类中仍然是protected的
C.基类的protected成员在private派生类中是private的
D.基类的protected成员不能被派生类的对象访问
18. C++类体系中,不能被派生类继承的有( A.构造函数)。

A.构造函数
B. 静态成员函数
C.非静态成员函数
D.赋值操作函数
二、填空题
1.C++将类继承分为单一继承和多重继承两种。

2. 派生类可以定义其________基类_______中不具备的数据和操作。

3. 派生类构造函数的初始化列表中包含____基类的数据成员___________-_____________。

4. 在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行
的析构函数,最后执行的析构函数。

5. 设有以下类的定义:
class A class B: protected A class C: private B
{ int A1; { int b1; { int c1;
protected: int A2; protected: int b2; protected: int c2;
public: int A3; public: int b3; public: int c3;
}; }; };
请按访问权限写出派生类C中具有的成员。

私有成员:(1)
保护成员:(2)
公有成员:(3) 。

6. 生成一个派生类对象时,先调用的构造函数,然后调用的构造函数。

7. 继承发生在利用现有类派生新类时,其中称为基类,或类;称为派生类,或类。

8. 在继承关系中,称为多重继承。

9. 在公有继承关系下,派生类的对象可以访问基类中的成员。

10. 在保护继承关系下,基类的私有成员将成为派生类中的成员。

三、问答题
1.比较类的三种继承方式public(公有继承)、protected(保护继承)、private(私有继承)之间的差别。

2. 派生类构造函数执行的次序是怎样的?
3. 如果在派生类B已经重载了基类A的一个成员函数fn1(),没有重载成员函数fn2(),如何调用基类的成员函数fn1(),fn2()?
4. 什么叫做虚基类?它有何作用?
四、程序设计题
1. 声明一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积。

使用Rectangle类创建一个派生类Square。

2. 建立一个基类Building ,用来存储一座楼房的层数、房间数以及它的总平方英尺数。

建立派生类Housing,继承Building,并存储下面的内容:卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。

然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据。

3. 声明一个哺乳动物Mammal类,再由此派生出狗Dog类,声明一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。

4.定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。

相关文档
最新文档