C++选择题练习.docx
《C++选择题练习.docx》由会员分享,可在线阅读,更多相关《C++选择题练习.docx(8页珍藏版)》请在冰点文库上搜索。
![C++选择题练习.docx](https://file1.bingdoc.com/fileroot1/2023-5/19/d0fe35e1-9247-4527-9dce-3a0928a8f4b8/d0fe35e1-9247-4527-9dce-3a0928a8f4b81.gif)
C++选择题练习
继承练习
1.在派生类对基类继承的传递性中,C是错误的。
?
(2分)
A在公有继承方式下,直接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
B在公有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
C在私有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
D不管是私有继承还是公有继承,基类中的私有成员在派生类的作用域内都是不可能见的。
2.下列有关继承和派生的叙述中,正确的是:
?
C(2分)
A派生类不能访问通过私有继承的基类的保护成员
B多继承的虚基类不能够实例化
C如果基类没有默认构造函数,派生类就应当定义带形参的构造函数
D类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
第一次上机课
3.设x和y均为bool量,则x&&y为真的条件是(A)。
?
(2分)
A它们均为真
B其中一个为真
C它们均为假
D其中一个为假
4.设intx;,则经过(C)后,语句*px=0;可将x值置为0。
?
(2分)
Aint*px;
Bintconst*px=&x;
Cint*constpx=&x;
Dconstint*px=&x;
第三次上机课
2-1
在以下哪种情形,复制构造函数会被调用。
?
(B)(2分)
A当一个对象采用引用方式,作为参数传递给一个函数
B当一个函数采用值方式,返回一个对象
C当一个对象赋值给另一个对象
D以上答案都不对
2-2
对于以下关于友元的说法(D)?
(2分)
A如果函数fun被声明为类A的友元函数,则该函数成为A的成员函数
B如果函数fun被声明为类A的友元函数,则该函数能访问A的保护成员,但不能访问私有成员
C如果函数fun被声明为类A的友元函数,则fun的形参类型不能是A。
D以上答案都不对
2-3
对于类之间的友元关系:
(D)?
(2分)
A如果类A是类B的友元,则B的成员函数可以访问A的私有成员
B如果类A是类B的友元,则B也是A的友元。
C如果类A是类B的友元,并且类B是类C的友元,则类A也是类C的友元。
D以上答案都不对。
2-4
友元的作用是?
(A)(2分)
A提高程序的运用效率
B加强类的封装性
C实现数据的隐藏性
D增加成员函数的种类
2-5
若有以下调用语句,则不正确的fun()函数的首部是:
(D)?
(2分)
intmain(){inta[50]={1},n=20;fun(n,&a[9]);…}
Avoidfun(intm,intx[])
Bvoidfun(ints,inth[41])
Cvoidfun(intp,int*s)
Dvoidfun(intn,inta)
2-6
若有如下函数调用语句:
func(rec1,rec2+rec3,(rec4,rec5));则该函数调用语句中,含有的实参个数是:
(A)?
(2分)
A3
B4
C5
D有语法错误
2-7
给定以下类声明,哪个成员函数可能改变成员变量data?
?
(D)(2分)
classA{
public:
voidf1(intd);
voidf2(constint&d);
voidf3(intd)const;
private:
intdata;
};
Af1
Bf2
Cf3
Df1和f2
2-8
以下程序中,new语句干了什么。
(C)?
(2分)
int**num;
num=newint*[20];
A分配了长度为20的整数数组空间,并将首元素的指针返回。
B分配了一个整数变量的空间,并将其初始化为20。
C分配了长度为20的整数指针数组空间,并将num[0]的指针返回。
D存在错误,编译不能通过。
第二次上机课
2-1
重载函数在调用时选择的依据中,错误的是(D)。
?
(2分)
A函数的参数
B参数的类型
C函数的名字
D函数的类型
2-2
对定义重载函数的下列要求中,(C)是错误的。
?
(2分)
A要求参数的个数不同
B要求参数中至少有一个类型不同
C要求函数的返回值不同
D要求参数个数相同时,参数类型不同
2-3
下列函数中,(C)不能重载。
?
(2分)
A成员函数
B非成员函数
C析构函数
D构造函数
2-4
下列对重载函数的描述中,(A)是错误的。
?
(2分)
A重载函数中不允许使用默认参数
B重载函数中编译根据参数表进行选择
C不要使用重载函数来描述毫无相干的函数
D构造函数重载将会给初始化带来多种方式
2-5
下列运算符中,(C)运算符不能重载。
?
(2分)
A&&
B[]
C:
:
D<<
2-6
下列关于运算符重载的描述中,(D)是正确的。
?
(2分)
A运算符重载可以改变操作数的个数
B运算符重载可以改变优先级
C运算符重载可以改变结合性
D运算符重载不可以改变语法结构
第四次上机
1-1
因为静态成员函数不能是虚函数,所以它们不能实现多态。
?
(5分)
T
1-2
函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
?
(1分)
T?
1-3
重载函数可以带有默认值参数,但是要注意二义性。
?
(1分)
T?
1-4
多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。
?
(1分)
T?
?
?
?
?
1-5
对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。
?
(1分)
F
1-6
对单目运算符重载为友元函数时,可以说明一个形参。
而重载为成员函数时,不能显式说明形参。
?
(1分)
T?
?
?
?
?
1-7
重载运算符可以保持原运算符的优先级和结合性不变。
?
(1分)
T?
?
?
?
?
1-8
预定义的提取符和插入符是可以重载的。
?
(5分)
T?
?
?
?
?
1-9
模板函数可以用同名的另一模板函数重载。
(5分)
T?
?
?
?
?
1-10
重载operator+时,返回值的类型应当与形参类型一致。
比如以下程序中,operator+的返回值类型有错:
classA{
intx;
public:
A(intt=0):
x(t){}
intoperator+(constA&a1){returnx+a1.x;}
};?
(5分)
?
F
1-11
虚函数是用virtual关键字说明的成员函数。
?
(1分)
T?
?
?
?
?
1-12
将构造函数说明为纯虚函数是没有意义的。
?
(1分)
T?
?
?
?
?
1-13
抽象类是指一些没有说明对象的类。
?
(1分)
F
1-14
动态绑定是在运行时选定调用的成员函数的。
?
(1分)
T?
?
?
?