17秋学期北理工《面向对象程序设计》在线作业4.docx
《17秋学期北理工《面向对象程序设计》在线作业4.docx》由会员分享,可在线阅读,更多相关《17秋学期北理工《面向对象程序设计》在线作业4.docx(14页珍藏版)》请在冰豆网上搜索。
17秋学期北理工《面向对象程序设计》在线作业4
北理工《面向对象程序设计》在线作业
试卷总分:
100得分:
100
一、单选题(共38道试题,共76分)
19.下列关于C++函数的描述中,正确的是()。
A.每个函数至少要有一个参数
B.每个函数都必须返回一个值
C.函数在被调用之前必须先进行声明或定义
D.函数不能自己调用自己
满分:
2分
正确答案:
C
38.下列关键字中不能用来声明类成员访问权限的是()。
A.public
B.static
C.protected
D.private
满分:
2分
正确答案:
B
1.在下列的各类函数中,______不是类的成员函数。
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
满分:
2分
正确答案:
D
3.派生类对象对它的基类成员中()是可以访问的。
A.公有继承的私有成员
B.公有继承的保护成员
C.公有继承的公有成员
D.私有继承的公有成员
满分:
2分
正确答案:
C
8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。
A.int*p=newint[30]
B.int*p=newint(30)
C.int*p=new[30]int*p=new[30]
D.*p=newint[30]
满分:
2分
正确答案:
A
35.多继承时对象的构造顺序中包含如下4步:
①所有非虚基类的构造函数按照它们被继承的顺序构造;②所有虚基类的构造函数按照它们被继承的顺序构造;③所有子对象的构造函数按照它们声明的顺序构造;④派生类自己的构造函数体;这4个步骤的正确顺序是()。
A.④③①②
B.②④③①
C.②①③④
D.③④①②
满分:
2分
正确答案:
C
30.若函数原型为voidFun(intx,inty=6,intchar='a'),则下列调用错误的是()。
A.Fun(5)
B.Fun(5,'b')
C.Fun(5,8)
D.Fun(2,4,'b')
满分:
2分
正确答案:
B
18.在横线处填入语句()后,下列语句序列能够正确执行。
。
int*ptr;delete[]ptr;
A.ptr=newint(5);
B.ptr=newint[5];
C.ptr=newint;
D.ptr=malloc(5);
满分:
2分
正确答案:
B
14.下列程序的输出结果是()。
#includeclassPart{public:
Part(intx=0):
val(x){cout<intval;};classWhole{public:
Whole(intx,inty,intz=0):
p2(x),p1(y),val(z){cout<Partp1,p
A.123321
B.213312
C.213
D.123123
满分:
2分
正确答案:
B
31.print()函数是某类中无返回值的常成员函数,下列表示中,正确的是()。
A.voidprint()const
B.constvoidprint()
C.voidconstprint()
D.voidprint(const)
满分:
2分
正确答案:
A
23.在下面的类定义中,横线处应填入的内容是()。
classMyClass{private:
staticintcount;};count=0;
A.int
B.staticint
C.intMyClass
D.staticintMyClass:
满分:
2分
正确答案:
C
12.复制构造函数的参数通常为()
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
满分:
2分
正确答案:
C
7.下列描述中,错误的是()。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D.构造函数可以声明为虚函数
满分:
2分
正确答案:
D
2.有如下类声明:
classMyClass{public:
MyClass(){cout<<1;}};执行语句MyClassa,b[2],*p[2];后,程序的输出结果是()。
A.11
B.111
C.1111
D.11111
满分:
2分
正确答案:
B
15.关于封装,下列说法中不正确的是()。
A.通过封装,对象的全部属性和操作结合在一起,形成一个整体
B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C.通过封装,每个对象都成为相对独立的实体
D.通过封装,对象的属性都是不可见的
满分:
2分
正确答案:
D
25.下列关于构造函数和析构函数的描述中,错误的是()。
A.构造函数可以重载
B.析构函数名与类名相同
C.构造函数中可以设置参数的默认值
D.类中只有一个析构函数
满分:
2分
正确答案:
B
33.C++中用于实现运行时多态性的是()。
A.内联函数
B.重载函数
C.静态函数
D.虚函数
满分:
2分
正确答案:
D
35.下列关于继承的描述中,错误的是()。
A.派生类对象不能访问基类的保护成员
B.派生类对基类成员的访问权限随着继承方式而改变
C.派生类成员可以访问基类的私有成员
D.派生类继承了基类的所有成员
满分:
2分
正确答案:
C
19.下列函数中,不是类的成员函数的是()。
A.构造函数
B.友元函数
C.析构函数
D.复制构造函数
满分:
2分
正确答案:
B
34.下列语句中,会产生编译错误的是()。
A.intx=5;int&ref=x;
B.constintsize;
C.intx=5;int&ref=x;x++;
D.constintsize=100;
满分:
2分
正确答案:
B
38.下列描述中,错误的是()。
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承时基类中的private成员在派生类中仍是private的
C.私有继承时基类中的public成员在派生类中是private的
D.保护继承时基类中的public成员在派生类中是protected的
满分:
2分
正确答案:
B
11.下列程序的输出结果是()。
#includeclassMyClass{public:
MyClass(){cout<<'A';}MyClass(charc){cout<A.ABX
B.ABXB
C.AXB
D.AXBB
满分:
2分
正确答案:
D
18.不可以成为类的数据成员的是______
A.自身类的对象
B.另一个类的对象
C.自身类的指针或引用
D.其他基本数据类型
满分:
2分
正确答案:
A
29.下列描述中,()不是面向对象系统包含的要素。
A.对象
B.类
C.继承
D.函数
满分:
2分
正确答案:
D
6.执行下列程序后的输出结果是()。
#includeintfun1(intx){return++x;}intfun2(int&x){return++x;}intmain(){inta=0,b=0,c=0;c=fun1(a)+fun2(b);cout<A.002
B.012
C.102
D.112
满分:
2分
正确答案:
B
3.在派生类中重新定义虚函数时,除了()方面,其他方面都必须与基类中相应的虚函数保持一致。
A.参数个数
B.参数类型
C.函数名称
D.函数体
满分:
2分
正确答案:
D
27.有如下类定义:
classMyClass{public:
intgetRef()const{return&a;}intgetValue()const{returna;}voidset(intn)const{a=n;}friendvoidshow(MyClassobj)const{cout<A.getRef
B.getValue
C.set
D.show
满分:
2分
正确答案:
B
38.下列关于this指针的描述中,正确的是()。
A.任何与类相关的函数都有this指针
B.类的成员函数都有this指针
C.类的友元函数都有this指针
D.类的非静态成员函数都有this指针
满分:
2分
正确答案:
D
33.设置虚基类的目的是()。
A.简化程序
B.消除二义性
C.提高运行效率
D.减少目标代码
满分:
2分
正确答案:
B
28.设置虚基类的目的是_____。
A.简化程序;
B.消除二义性;
C.提高运行效率;
D.减少目标代码;
满分:
2分
正确答案:
B
31.下列对引用的陈述中不正确的是()。
A.每一个引用都是其所引用对象的别名,因此必须初始化
B.形式上针对引用的操作实际上作用于它所引用的对象
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D.不需要单独为引用分配存储空间
满分:
2分
正确答案:
C
32.在下列函数原型中,可以作为类A构造函数的是()。
A.voidA(int);
B.intA();
C.A(int)const;
D.A(int);
满分:
2分
正确答案:
D
5.下列关于运算符重载的描述中,______是正确的。
A.运算符重载可以改变运算数的个数;
B.运算符重载可以改变优先级;
C.运算符重载可以改变结合性;
D.运算符重载不可以改变语法结构。
满分:
2分
正确答案:
D
7.下列关于成员访问权限的描述中,错误的是()。
A.公有数据成员和公有成员函数都可以被类对象直接处理
B.类的私有数据成员只能被公有成员函数以及该类的友元访问
C.只有类或派生类的成员函数和友元可以访问保护成员
D.保护成员可以在派生类中被访问,而私有成员不可以
满分:
2分
正确答案:
B
23.下列关于类型转换的描述中,正确的是()。
A.由不同类型操作数组成的表达式的类型一定是最高类型double类型
B.强制类型转换都是非保值映射
C.赋值表达式的类型是左值的类型
D.类型转换是永久性的
满分:
2分
正确答案:
C
5.变量s的定义为“char*s=”Helloworld!
”;”,要使变量p指向s所指向的同一个字符串,则应选取()。
A.char*p=s
B.char