C++复习题Word下载.docx
- 文档编号:21692234
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:58
- 大小:36.92KB
C++复习题Word下载.docx
《C++复习题Word下载.docx》由会员分享,可在线阅读,更多相关《C++复习题Word下载.docx(58页珍藏版)》请在冰豆网上搜索。
C、对一个指针可以连续使用多次该运算符;
D、指针名前只有一对方括号符,不管所删除数组的维数。
9、在( C)情况下适宜采用inline定义内联函数。
A、函数体含有循环语句;
B、函数体含有递归语句;
C、函数代码小,频繁调用;
D、函数代码多,不常调用;
10、定义析构函数时,应该注意(C )。
A、其函数名与类名完全相同;
B、函数返回类型是void类型;
C、无形参,也不可重载;
D、函数体中必须有delete语句;
11、关于成员函数特征的下列描述中,(A )是错误的。
A、成员函数一定是内联函数;
B、成员函数可以重载;
C、成员函数可以设置缺省参数值;
D、成员函数可以是静态的;
12、下列静态数据成员的特性中,(C )是错误的。
A、说明静态数据成员时前边要加修饰符static;
B、静态数据成员要在类体外进行初始化;
C、静态数据成员不是所有对象所共用的;
D、引用静态数据成员时,要在其名称前加<
类名>
和作用域运算符;
13.关于类成员函数的描述中,(B)是错的。
A.类中可以说明一个或多个成员函数B.类中的成员函数只能定义在类体外
C.定义在类体外的成员函数前加inline可以成为内联函数(内置函数)D.在类体外定义成员函数时,在函数名前除了加类型说明符外,还需作用域符来限定该成员函数所属的类
(1)关于常成员的描述中,错误的是(B)
A.常成员包含常数据成员和常成员函数两种B.常数据成员必须是公有的
C.常数据成员要使用构造函数成员初始化列表进行初始化
D.常成员函数是为常对象定义的
(2)下面对静态数据成员的描述中,正确的是(B)。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员必须在类体内进行初始化
C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用
(3)下面对静态数据成员的描述中,正确的是(A)。
A.静态数据成员是类的所有对象共享的数据B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用
(4)下列关于对象数组的描述中,(A)是错误的。
A.对于对象数组只能赋初值而不能再赋值
B.对象数组的下标从0开始
C.对象数组的每个元素都是相同类的对象
D.对象数组的数组名是一个常量指针
(5)下列关于子对象的描述中,(D)是错误的。
A.子对象是类的一种数据成员,它是另一个类的对象
B.子对象不可以是自身类的对象
C.对子对象的初始化要包含在该类的构造函数中
D.一个类中只能含有一个子对象作其成员
(6)关于指向类的成员指针的描述中,错误的是(D)
A.指向类成员指针与指向对象的指针是不同的。
B.指向类成员函数指针可用该类的成员函数名给它赋值。
C.指向类数据成员指针可用该类的数据成员地址给它赋值。
D.指向类成员指针必须指向类的公有成员。
(7)已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的;
A.voidprint()const;
B.constvoidprint();
C.voidconstprint();
D.voidprint(const);
(1)下面关于友元函数的描述正确的是(C)
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐蔽性
D.友元函数只能访问类的私有成员,不能访问公有和保护成员。
(2)关于友元类的描述中,错误的是(C)
A.友元类中的成员函数都是友元函数
B.友元类被说明在一个类中,它与访问权限无关
C.友元类是被定义在某个类中的嵌套类
D.如果Y是类X的友元,则类X不一定是类Y的友元
(3)若要将类MyClass定义为YourClass的友元类,则应该在(B)类中定义。
A.MyClass
B.YourClass
C.二个类中都应定义
D.在两个类之外定义
(4)友元在访问类的对象的成员时(D)。
A)直接使用类的成员名
B)使用this指针指向成员名
C)使用“类名:
:
成员名”的形式
D)使用“对象名.成员名”的形式
(5)分析下列程序,指出正确的说法(B)。
classone
{private:
intx;
public:
friendclasstwo;
};
classtwo{voidfun(one&
t);
};
voidtwo:
fun(one&
t){cout<
<
t.x;
}
A)类one的所有成员函数都是类two的友元
B)类two的所有成员函数都是类one的友元
C)只有类one的公有成员函数是类two的友元
D)只有类one的私有成员函数是类two的友元
(6)如果类A被说明成类B的友元,则(D)。
A)类A的成员即类B的成员
B)类B的成员即类A的成员
C)类A的成员函数不得访问类B的成员
D)类B不一定是类A的友元
(7)下列各类函数中,(C)不是类的成员函数。
A)构造函数
B)析构函数
C)友元函数
D)拷贝初始化构造函数
(8)类A是类B的友元,类B是类C的友元,则(D)。
A)类B是类A的友元
B)类C是类A的友元C)类A是类C的友元
D)以上都不对
(9)友元的作用是(D)。
A)加强类的封装性
B)实现数据的隐藏性
C)增加成员函数的种类
D)提高程序的运行效率
(10)友元关系不能(A)。
A)继承
B)是类与类的关系
C)是一个类的成员函数与另一个类的关系
1.下列运算符中,(A)不能在C++中重载
A.?
B.[]C.newD.&
&
2.下列运算符不能用友元函数重载的是(C)
A.+B.-C.*D.<
3.下列运算符必须重载为类运算符(B)
A./B.=C.&
D.^
4.关于运算符重载的下列描述中正确的是(B)
A.改变优先级B.保持原有的结合性
C.改变操作数的个数D.改变语法结构
5.关于C++运算符函数的描述中,正确的是(D)
A.只有类成员运算符B.只有友元运算符
C.只有非成员和非友元运算符D.上述三者都有
6.在一个类,可以对一个操作符进行(D)种重载
A.1B.2种以下C.3种以下D.多种
7.重载赋值操作符时,应声明为(C)函数
A.友元B.虚C.成员D.多态
8.友元运算符obj1>
obj2被C++编译器解释为(A)
A.operator>
(obj1,obj2)B.>
(obj1,obj2)
C.obj2.operator>
(obj1)D.obj1.operator>
(obj2)
9.运算符函数的返回类型(D)。
A)必须是void类型B)通常是void类型
C)不能是void类型D)可以是void类型,但不常用
10.为了满足运算符+的可交换性,必须将其重载为(D)
A.成员函数B.静态成员函数C.虚函数D.友元函数
11.下列关于对象数组的描述中错误的是(D)。
A)对象数组的下标是从0开始的B)对象数组的数组名是一个常量指针
C)对象数组的每个元素是同一个类的对象D)对象数组只能赋初值,而不能在定义后赋值
12.若++重载为友元运算符,则C++编译器对表达式obj++的解释为(B)。
A)operator++(obj)B)operator++(obj,0)
C)obj.operator++()D)obj.operator++(0)()
注:
习惯形式友元运算符函数调用形式成员运算符函数调用形式
a+boperator(a,b)a.operator+(b)
-aoperator-(a)a.operator-()
a++operator++(a,0)a.operator++(0)
(1)下列对派生类的描述中,(C)是错误的。
A.一个派生类可以作为另一个派生类的基类B.派生类至少应有一个基类
C.基类中成员的访问权限被派生类继承后都不改变
D.派生类的成员除了自己定义的成员外,还包含了它的基类成员
(2)main()函数可以访问派生类的对象中它的哪一类基类成员?
(A)
A.公有继承的基类的公有成员B.公有继承的基类的保护成员
C.公有继承的基类的私有成员D.保护继承的基类的公有成员
(3)可以用p.a的形式访问派生类对象p的基类成员a,其中a是(D)。
A)私有继承的公有成员B)公有继承的私有成员
C)公有继承的保护成员D)公有继承的公有成员
(4)下面叙述不正确的是(D)。
A)派生类一般都用公有派生B)对基类成员的访问必须是无二义性的
C)赋值兼容规则也适用于多重继承的组合D)基类的公有成员在派生类中仍然是公有的。
(5)下面叙述不正确的是(A)。
A)基类的保护成员在派生类中仍然是保护的
B)基类的保护成员在公有派生类中仍然是保护的
C)基类的保护成员在私有派生类中仍然是私有的
D)对基类成员的访问必须是无二义性
(6)在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是(C)。
A)派生类的对象可以赋给基类的对象B)派生类的对象可以初始化基类的引用
C)派生类的对象可以直接访问基类中的成D)派生类的对象的地址可以赋给指向基类的指针
(7)C++类体系中,不能被派生类继承的是(B)
A)虚函数B)构造函数C)静态成员函数D)“+”运算符函数
(8)派生类的构造函数的成员初始化列表中,不能包含(C)
A)基类的构造函数B)派生类中子对象的初始化
C)基类中子对象的初始化D)派生类中一般数据成员的初始化
(9)派生类的派生类不可访问的基类成员是(C)
A)先公有继承方式再私有继承方式的基类中的公有成员和保护成员
B)先公有继承方式再保护继承方式的基类中的公有成员和保护成员
C)先私有继承方式再公有继承方式的基类中的公有成员和保护成员
D)先保护继承方式再公有继承方式的基类中的公有成员和保护成员
(10)关于多继承二义性的描述,(D)是错误的。
A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
B.如果一个派生类是从具有两个同名间接基类的两个直接基类派生来的,则派生类对该公共基类的访问可能出现二义性
C.解决二义性最常用的方法是使用作用域运算符对成员进行限定
D.派生类和它的基类中出现同名函数时,将出现二义性
(11)多继承派生类建立对象时,(B)被最先调用。
A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数D.派生类中子对象类的构造函数
(12)设置虚基类的目的是(A)。
A)消除两义性B)简化程序C)提高运行效率D)减少目标代码
(13)下列虚基类的声明中正确的是(B)。
A)classvirtualB:
publicAB)classB:
virtualpublicA
C)classB:
publicAvirtualD)virtualclassB:
publicA
(14)下列不表示虚继承的是(C)
A)virtualpublicB)publicvirtualC)publicD)virtual
(15)带有虚基类的基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的部分初始化次数为:
(B)
A)不能初始化B)一次
C)与虚基类下面的派生类层数有关D)与虚基类下面的派生类个数有关
(1)定义重载函数的下列条件中,(C)是错误的。
A.要求参数个数不同B.要求参数类型不同
C.要求函数返回值类型不同D.要求在参数个数相同时,参数类型的顺序不同
(2)关于下列虚函数的描述中,(C)是正确的。
A.虚函数是一个static存储类的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中可不必将对应的函数说明为虚函数
D.派生类的虚函数与基类的虚函数应具有不同的类型或个数
(3)关于纯虚函数和抽象类的描述中,(C)是错误的。
A.纯虚数是一种特殊的虚函数,它没有具体实现
B.抽象类中一定具有一个或多个纯虚函数
C.抽象类的派生类中一定不会再有纯虚函数
D.抽象类一般作为基类使用,使纯虚函数的实现由其派生类给出
(4)以下一种类中,(A)不能建立对象。
A.抽象类B.派生类C.虚基类D.基类
(5)下列函数中不能重载的是(C)。
A)成员函数B)非成员函数C)析构函数D)构造函数
(6)下列描述中,抽象类的特征有(D)。
A)可以说明虚函数B)可以构造函数重载C)可以定义友员函数D)不能说明其对象
(7)下列不属于动态联编实现的条件有(D)。
A)要有说明的虚函数。
B)调用虚函数的操作是指向对象的指针或者对象引用:
或者是由成员函数调用虚函数。
C)子类型关系的确立。
D)在构造函数中调用虚函数。
(8)派生类中对基类的虚函数进行替换时,派生类中说明的虚函数与基类中的被替换的虚函数之间不要求满足的是(C)。
A)与基类的虚函数具有相同的参数个数。
B)其参数的类型与基类的虚函数的对应参数类型相同。
C)基类必须定义纯虚函数。
D)其返回值或者与基类的虚函数相同,或者都返回指针或引用,并且派生类虚函数所返回的指针或引用的基类型是基类中被替换的虚函数所返回的指针或引用的基类的子类型。
(9)下列关于抽象类说法正确的是:
(B)
A)抽象类处于继承类层次结构的较下层。
B)抽象类刻画了一组子类的操作通用接口。
C)抽象类可以作为类直接使用。
D)抽象类可以直接定义对象。
(10)下列关于虚析构函数说法不正确的是(B)。
A)在析构函数前加上关键字virtual,就说明了虚析构函数。
B)如果一个基类的析构函数说明为虚析构函数,则它的派生类中的析构函数须用virtual关键字说明后才是虚析构函数。
C)说明虚析构函数的目的在于使用delete删除一个对象时,能保证析构函数被正确地执行。
D)设置虚函数后,可以采用动态联编的方式选择析构函数。
(11)编译时多态性通过使用(B)获得。
A)继承B)虚函数C)重载函数D)析构函数
(12)可以使用(A)来阻止基类的成员函数调用派生类中的虚函数。
A)成员名限定B)指针C)引用D)关键字virtual
(13)抽象类应该含有(D)。
A)至多一个虚函数B)至多一个虚函数是纯虚函数
C)至少一个虚函数D)至少一个虚函数是纯虚函数
(14)一个抽象类可以说明为(A)。
A)指向抽象类对象的指针B)类成员数据C)抽象类的对象D)数组元素
(15)对于抽象类的使用需要注意的地方,下列不正确的说法是:
(C)
A)抽象类只能用作其它类的基类,不能建立抽象类对象。
B)抽象类不能用作参数类型,函数返回类型或显式转换的类型。
C)定义抽象类时至少要定义一个虚函数。
D)可以说明指向抽象类的指针和引用,此指针可以指向它的派生类,进而可以实现多态性。
(16)关于动态联编的说法,下列哪个不正确?
A)动态联编只能通过指针或引用标识对象来操作虚函数。
B)C++使用虚函数来指定哪些函数需要用动态联编方式处理。
C)动态联编不能实现静态类型检查。
D)动态联编能够在运行时根据其类型确认调用哪个函数。
(17)将一个类的成员函数尽可能地设置成虚函数总是有益的,下列设置虚函数必须注意的情况中,哪个是错误的?
(D)
A)只有类的成员函数才能说明为虚函数。
B)静态成员函数不能是虚函数。
C)构造函数不能是虚函数。
D)析构函数不能是虚函数。
(18)在派生类中重新定义虚函数时必须在(A)方面与基类保持一致。
A)参数个数B)赋值C)参数名字D)操作内容
(19)以下哪个基类中的成员函数表示纯虚函数(C)。
A)virtualvoidvf(int)B)voidvf(int)=0;
C)virtualvoidvf()=0D)virtualvoidvf(int){}
(20)通过一个对象调用虚函数时,C++系统对该调用采用(B)。
A)动态联编B)静态联编C)不确定是哪种联编D)函数重载
(1)已定义以下函数模板:
template<
typenameT>
Tfun(Ta,Tb)
{……
……}
下列描述中,(C)是错误的。
A)该函数模板只有一个模板参数。
B)该函数模板所生成的模板函数中,其参数和返回值的类型必须相同。
C)该函数模板所生成的模板函数中,其参数可以不同。
D)T类型所规定的范围包括类的对象。
(2)进行文件操作时需要包含(B)文件。
A)iostream.hB)fstream.hC)stdio.hD)stdib.h
(3)下述哪种表达是错误的?
A)cout<
setw(10);
B)cout<
fill(‘.’);
C)cout.setf(ios:
doc);
D)cout.width(10);
(4)要求浮点输出的必须带有一个小数点的格式控制数量是(C)。
A)showposB)showbaseC)showpointD)fixed
(5)格式控制常量left的含义是(C)。
A)跳出输入中的空白B)输出数据按输出域右对齐
C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题