继承多态运算符重载文件单元测验.docx
- 文档编号:28936024
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:17
- 大小:20.79KB
继承多态运算符重载文件单元测验.docx
《继承多态运算符重载文件单元测验.docx》由会员分享,可在线阅读,更多相关《继承多态运算符重载文件单元测验.docx(17页珍藏版)》请在冰豆网上搜索。
继承多态运算符重载文件单元测验
继承、多态、运算符重载、文件单元测验
(满分100)
班级学号姓名成绩
一、选择题(每小题1分,共30分)
1.下列表示引用的方法中,
(1)是正确的。
已知:
intm=10:
A.int&x=m;B.int&y=10;C.int&z;D.float&t=&m;
2.一个类的友元函数能够访问该类的
(2)。
A.私有成员B.保护成员C.公有成员D.所有成员
3.下面关于友元的描述中,错误的是(3)。
A.友元函数可以访问该类的私有数据成员
B.一个类的友元类中的成员函数都是这个类的友元函数
C.友元可以提高程序的运行效率
D.类与类之间的友元关系可以继承
4.关于虚函数的描述中,(4)是正确的。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
5.实现运行时的多态性要使用(5)。
A.重载函数B.构造函数C.析构函数D.虚函数
6.如果一个类至少有一个纯虚函数,那么就称该类为(6)。
A.抽象类B.虚基类C.派生类D.以上都不对
7.关于纯虚函数和抽象类的描述中,(7)是错误的。
A.纯虚函数是一种特殊的虚函数,它没有具体的定义
B.抽象类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出
8.下列描述中,(8)是抽象类的特性。
A.可以说明虚函数B.可以进行构造函数重载
C.可以定义友元函数D.不能说明其对象
9.(9)是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自已的版本。
A.虚析构函数B.虚构造函数C.纯虚函数D.静态成员函数
10.在下面的程序中,A、B、C、D四句编译时出现错误的是(10)。
ClassA//A
{
public:
//B
A(){func();}//C
virtualvoidfunc()=O;//D
};
11.下列关于运行时的多态性的叙述不正确的是(11)。
A.运行时的多态性要通过虚函数来实现
B.运行时的多态性要通过指向基类的指针来实现
C.运行时的多态性是在编译时确定其要执行的函数
D.运行时的多态性是在执行过程中根据具体被操作的对象来确定要运行的函数
答案:
C
12.在以下类定义中,(12)的虚基类
A)类B、类C是类AB)类A是类B、类CC)类B、类C是类DD)类A是类D
classA{
public:
intx;
A(inta=0){x=a;}
};
classB:
publicvirtualA
{...};
classC:
virtualpublicA
{...};
classD:
publicB,publicC
{Ax;
public:
intm;
D(inta,intb,intc):
B(a),C(b),x(c)//F
...
};
13.下列运算符中,(13)运算符在C++中不能重载。
A.&&B.[]C.:
:
D.new
14.下列关于运算符重载的描述中,(14)是正确的。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构
15.友元运算符objl>obj2被C++编译器解释为(15)。
A.operator>(objl,obj2)B.>(obj1,obj2)
C.obj2.operator:
>(obj1)D.objl.operator>(obj2)
16.现需要对list类对象使用的逻辑运算符“==”重载,以下函数声明(16)是正确的。
A、list&list:
:
operator==(constlist&a);
B、listlist:
:
operator==(constlist&a);
C、bool&list:
:
operator==(constlist&a);
D、boollist:
:
operator==(constlist&a);
17.以下类中分别说明了“+=”和“++”运算符重载函数的原型。
如果主函数中有定义:
funm,c,d;,那么,执行语句c=m++;时,编译器把m++解释为:
(17)
A)c.operator++(m);B)m=operator++(m);
C)m.operator++(m);D)operator++(m);
classfun
{public:
......
funoperator+=(fun);
friendfunoperator++(fun&,int);
};
18.按文件的访问方式不同,C++文件可分为(18)
A、文本文件、二进制文件B、顺序文件、随机文件
C、ASCII文件、顺序文件D、数据文件、文本文件
19.操作磁盘文件时需要包含(19)文件
A)iostream.hB)fstream.hC)iomanip.hD)stdlib.h
20.打开一个磁盘文件可以使用如ofstreamofile("A:
data.txt");的语句,句中的ofile函数是文件流类的(20)
A)成员函数B)系统函数C)构造函数D)自定义函数
21.C++中的类有两种用法:
一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过(21),派生出新的类。
A.复用B.继承
C.单继承D.多继承
22.继承具有(22),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
A.规律性B.传递性C.重复性D.多样性
23.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则(23)。
A.完全相同B.完全不同
C.部分相同,部分不同D.以上都不对
24.基类的(24)不能为派生类的成员访问,基类的(25)在派生类中的性质和继承的性质一样,而基类的(26)在私有继承时在派生类中成为私有成员,在公有和保护继承时在派生类中仍为保护成员。
A.公有成员B.私有成员
C.私有成员函数D.保护成员
25.派生类的构造函数的成员初始化列表中,不能包含(27)。
A.基类的构造函数B.派生类中子对象的初始化
C.基类的子对象初始化D.派生类中一般数据成员的初始化
26.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:
先执行(28),再执行(29),后执行(30)。
A.基类的构造函数B.成员对象的构造函数C.派生类本身的构造函数
D.抽象类的构造函数
二.填空题(每空1分,共10分)
1.在c++中,将多态性分为静态多态性和动态多态性两种。
函数重载属于
(1)多态性,虚函数属于
(2)多态性。
2.用一个类定义了一个指针变量,但这个指针变量只能指向它的派生类的对象。
这个类必定是:
(3)
3.利用成员函数对双目运算符重载,其左操作数为(4),右操作数为(5)。
4.在c++中,运算符的重载有两种实现方法,一种是通过(6)来实现,另一种通过成员函数来实现。
5.当用成员函数重载双目运算符时,运算符的左操作数必定是:
(7)
6.C++允许用户利用fstream类来定义非标准的文件对象。
当被定义的对象是调用重载运算符”>>”或”<<”来读取或写入文件时,这个文件必定是__(8)__文件。
7.ifstream类的对象是用于文件(9)的,而ofstream类的对象则是用于文件(10)的。
三.程序分析题(每输出行2分,共46分)
1.以下程序的执行结果是。
#include
classbase{
public:
virtualvoidwho(){cout<<”baseclass”< }; classderivel: publicbase{ public: voidwho(){cout<<”derivelclass”< }; classderive2: publicbase{ public: voidwho(){cout<<”derive2class”< }; voidmain(){ baseobjl,*p; derivelobj2; derive2obj3; p=&objl; p->who(); p=&obj2; p->who(); p=&obj3; p->who(); } 2.以下程序的执行结果是。 #include classA{ public: virtualvoidfunl(){cout<<“Afunl”< virtualvoidfun2(){cout<<”Afun2”< voidfun3(){cout<<”Afun3”< voidfun4(){cout<<”Afun4”< }; classB: publicA{ public: virtualvoidfunl(){cout<<”Bfunl”< virtualvoidfun2(intx){cout<<”Bfun2”< virtualvoidfun3(){cout<<“Bfun3”< voidfun4(){cout<<”Bfun4”< }; voidmain(){ A*p; Bb; p=&b; p->funl(); p->fun2(); p->fun3(); p->fun4(); } 3.以下程序的执行结果是。 #include classbase{ public: virtualvoidfl(){cout<<”flfunctionofbase”< virtualvoidf2(){cout<<”f2functionofbase”< virtualvoidf3(){cout<<”f3functionofbase”< voidf4(){cout<<”f4functionofbase”< }; classderive: publicbase{ voidfl(){cout<<”flfunctionofderive”< voidf2(intx){cout<<”f2functionofderive”< voidf4(){cout<<”f4functionofderive”< } voidmain(){ baseobj1,*p; deriveobj2; p=&objl; p->fl(); p->f2(); p->f3(); p=&obj2; p->fl(); p->f2(); p->f4(); } 3.以下程序的执行结果是。 #include classSample{ intn; public: Sample(){} Sample(intm){n=m;} int&operator--(int){ n--; returnn; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 继承 运算 重载 文件 单元 测验