C++随堂测试继承多态重载答案.docx
- 文档编号:3800175
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:32
- 大小:25.12KB
C++随堂测试继承多态重载答案.docx
《C++随堂测试继承多态重载答案.docx》由会员分享,可在线阅读,更多相关《C++随堂测试继承多态重载答案.docx(32页珍藏版)》请在冰豆网上搜索。
C++随堂测试继承多态重载答案
C++随堂测试(继承、多态、重载)
一、选择题()
1.在C++中,类与类之间的继承关系具有(C)
A)自反性B)对称性C)传递性D)反对称性
2.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(C)
A)受限制B)保持不变C)受保护D)不受保护
3.在下列运算符中,不能重载的是(B)
A.!
B.sizeofC.newD.delete
4.不能用友元函数重载的是(A)。
A.=B.==C.<=D.++
5.在哪种派生方式中,派生类可以访问基类中的protected成员(B)
A)public和privateB)public、protected和private
C)protected和privateD)仅protected
6.下列函数中,不能重载运算符的函数是(B)。
A.成员函数B.构造函数C.普通函数D.友元函数
7.下面叙述错误的是(A)。
A)基类的protected成员在派生类中仍然是protected的
B)基类的protected成员在public派生类中仍然是protected的
C)基类的protected成员在private派生类中是private的
D)基类的protected成员不能被派生类的对象访问
8.如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为(B)。
A.operator*(i.operator++(),k)B.operator*(operator++(i),k)
C.i.operator++().operator*(k)D.k.operator*(operator++(i))
9.下面叙述错误的是(C)。
A)派生类可以使用private派生
B)对基类成员的访问必须是无二义性的
C)基类成员的访问能力在派生类中维持不变
D)赋值兼容规则也适用于多继承的组合
10.下列虚基类的声明中,正确的是:
(B)
A)classvirtualB:
publicAB)classB:
virtualpublicA
C)classB:
publicAvirtualD)virtualclassB:
publicA
11.已知在一个类体中包含如下函数原型:
VOLUMEoperator-(VOLUME)const;下列关于这个函数的叙述中,错误的是(B)。
A.这是运算符-的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变数据成员的值
12.假设A为抽象类,下列声明(B)是正确的
A)Afun(int);B)A*p;C)intfun(A);D)AObj;
13.在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。
下列叙述中正确的是(C)。
A.operator+有两个参数,operator*有两个参数
B.operator+有两个参数,operator*有一个参数
C.operator+有一个参数,operator*有两个参数
D.operator+有一个参数,operator*有一个参数
14.实现运行时的多态性要使用(D)。
A)重载函数B)构造函数
C)析构函数D)虚函数
15.当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)
A)public成员B)private成员C)protected成员D)友元
16.下面函数原型声明中,(C)声明了fun为普通虚函数
A)voidfun()=0;B)virtualvoidfun()=0;
C)virtualvoidfun();D)virtualvoidfun(){};
17.关于虚函数的描述中,正确的是(D)。
A)虚函数是一个静态成员函数
B)虚函数是一个非成员函数
C)虚函数既可以在函数说明时定义,也可以在函数实现时定义
D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
18、采用函数重载的目的在于:
(D)
A、实现共享B、减少空间
C、提高速度D、使用方便,提高可读性
19.若类X和类Y的定义如下:
classX
{inta,b;
public:
voidfx();
};
classY:
publicX
{intc;
public:
voidfy();
};
voidY:
:
fy(){c=a*b;}
则上述代码中,B是非法的语句。
A、voidfx();B、k=a*b;C、voidfy();D、intc;
20.以下程序的输出结果为是(B)。
#include
classA
{public:
intn;};
classB:
virtualpublicA{};
classC:
virtualpublicA{};
classD:
publicB,publicC
{intgetn(){returnB:
:
n;}};
voidmain()
{Dd;d.B:
:
n=10;d.C:
:
n=20;
cout< : n<<","< : n< } A、10,20B、20,20C、10,10D、输出有二义性,不确定 二、填空题 1.C++中多态性包括两种多态性: 编译时的和运行时的。 前者是通过函数和运算符的重载实现的,而后者是通过类继承关系和虚函数来实现的。 2.派生类对基类的继承有三种方式: _public_、_protected和__private_。 3..运算符重载是对已有的运算符赋予多重含义,使同一个运算符在作用于不同类型对象时导致不同的行为。 运算符重载的实质是函数重载,是类的多态性特征。 4.类继承中,缺省的继承方式是__private__。 当用public继承从基类派生一个类时,基类的public成员成为派生类的public成员,protected成员成为派生类的protected成员,对private成员是不可访问。 5.如果类α继承了类β,则类α称为基类,而类β称为派生类。 派生类的对象可作为基类的对象处理, 三、程序阅读 1.写出下面这段程序的运行结果 4.1#include #usingnamesoacestd; classT {public: T(){a=0;b=0;c=0;} T(inti,intj,intk) {a=i;b=j;c=k;} voidget(int&i,int&j,int&k) {i=a;j=b;k=c;} Toperator*(Tobj); private: inta,b,c; }; TT: : operator*(Tobj) {Ttempobj; tempobj.a=a*obj.a; tempobj.b=b*obj.b; tempobj.c=c*obj.c; returntempobj; } intmain() { Tobj1(1,2,3),obj2(5,5,5),obj3; inta,b,c; obj3=obj1*obj2; obj3.get(a,b,c); cout<<”(obj1*obj2):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 测试 继承 重载 答案