C++期末错题复习(选择题)(2)

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

1、下面有关重载函数的说法中正确的是( C )。
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
2、函数定义为Fun(int &n),变量定义int x =20 ,则下面调用正确的是( C )。
A. Fun(20) B. Fun(20 + x) C. Fun(x) D. Fun(& x)
3、一个类的友元函数或友元类可以访问该类的( C )。
A. 私有成员 B. 保护成员 C. 所有成员 D. 公有成员
4、对C++语言和C语言的兼容性,其中描述正确的是( B )。
A. C兼容C++
B. C++兼容C
C. C++不兼容C
D.C++部分兼容C
5、关于公有继承,下列说法错误的是( D )。
A. 基类的公有成员和保护成员被继承后作为派生类的公有成员和保护成员。
B. 派生类的其他成员可以直接访问基类的公有成员和保护成员。
C. 派生类成员和对象都无法访问基类的私有成员。
D. 派生类的对象可以访问基类的私有成员。
6. 假设Class Y:public X,即类Y是类X的派生类,则定义一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为( A )。
A)X,Y;Y,X B)X,Y;X,Y C)Y,X;X,Y D)Y,X;Y,X
7、对使用new申请的存储空间,释放时必须使用( C )。
A. free B.release C. delete D. malloc
8、下列叙述错误的是( D )。C
A.catch(…)语句可捕获所有类型的异常
B.一个try语句可以有多个catch语句
C.catch(…)语句可以放在catch语句组的中间
D.程序中try语句与catch语句是一个整体,缺一不可
9、所谓的数据封装就是将数据和对这些数据相关的操作组装在一起,形成一个实体,这个实体我可可以称为( A )
A. 类 B. 函数
C. 对象 D. 数据块
10、关于C与C++的关系的描述中,( B D)是错误的。
A. C语言是函数语言 B.C语言与C++是兼容的
C. C语言是C++的一个子集 D.C++和C语言都是面向对象的
11、设存在函数int min(int, int)返回两个参数中较小者的值,若求1,2,3三者中的较小者,下列表达式中不正确的是( A )
A.int v = min(1, 2, 3) B.int v = min(1, min(2, 3))
C.int v = min(min(2, 3), 1) D.int v = min(3, min(1, 2))
12、有关类和结构体的关系,错误的是( B)。
A. 结构体一般只有数据成员,通常不会加入函数方法
B. 类一般只有函数方法,通常不会包含数据成员
C. 类的成员默认都是私有的
D. 结构体的成员默认都是公开的
13、以下不能作为函数重载判断依据的是( A C)。
A . 参数顺序 B. 参数类型 C. 返回类型 D. 参数个数
14、类的构造函数被自动调用执行的情况是在定义类的( C)。
A.成员函数时 B.数据成员时 C.对象时 D.友元函数时
15、以下不能作为函数重载判断依据的是( A C)。
A . 参数顺序 B. 参数类型 C. 返回类型 D. 参数个数
16、C++提供了字符串类型—string,下列描述错误的是( C )。
A.string在C++标准库中声明的一个类。
B.使用时必须包含string头文件。
C. string类型只能用于声明类,不能用于定义变量。
D.使用方法和char、int类型一样。
17、关于new运算符的下列描述中,( C D)是错误的。
A.它可以用来动态创建对象和对象数组;
B.使用它创建的对象或对象数组可以使用运算符delete删除;
C.使用它创建对象时要调用构造函数;
D.使用它创建数组时必须指定初始值。
18、面向对象程序设计数据与( A )放在一起,作为一个相互依存、不可分割的整体来处理。41
A.对数据的操作 B.信息 C.数据隐藏 D.数据抽象
19、 this指针存在的目的是( C )。
A. 保证基类共有成员在子类中可以被访问
B. 保证基类保护成员在子类中可以被访问
C. 保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
D. 保证基类私有成员在子类中可以被访问
20、 在类中说明的成员可以使用关键字的是( A )。
A. public B. extern C. cpu D. register
21、能够释放对象所占资源的是 ( D A)
A.析构函数 B.数据成员 C.构造函数 D.静态成员函数
22、下列关于C++语言类的描述中错误的是( C )。
A. 类用于描述事物的属性和对事物的操作
B. 类与类之间通过封装而具有明确的独立性
C. 类与类之间必须是平等的关系,而不能组成层次结构
D. 类与类之间必须是平等的关系,而不能组成层次结构
23、下面关于类中概念的描述中错误的是( D )。
A. 类是抽象数据类型的实现 B. 类是具有共同行为的若干对象的统一描述体
C.类是创建对象的模板 D. 类就是C语言中的结构体类型
24、作用域运算符的功能是( C )。
A.标识作用域的级别 B.指出其大小
C.标识某个成员是属于哪一个类 D.给出的范围
25、下列关于模板的叙述中,错误的是( B )。
A. 在一定条件下函数模板的实参可以省略
B. 类模板不能有数据成员
C. 在模板生命中用<>括起来的部分是模板的形参表
D. 模板声明中的第一个符号总是关键字template
26、下列关于C++函数的叙述中,正确的是( D )。
A.每个函数都必须有参数 B.每个函数都必须返回一个值
C.函数在被调用之前可以不先声明 D.函数可以自己调用自己
27、下列带缺省值参数的函数说明中,正确的说明是( A )。
A. int Fun(int x,int y=2,int z=3);
B. int Fun(int x=1,int y,int z);
C. int Fun(int x=1,int y,int z=3);
D. int Fun(int x,int y=2,int z);
28、 假定A为一个类,f()为该类公有的函数成员,a1为该类的一个对象,则
访问a1对象中函数成员f()的格式为( B )。
A. a1.f B. a1.f() C. a1->f() D.(a1).f ()
29、对类的构造函数和析构函数描述正确的是( B )。
A. 构造函数不能重载,析构函数可以重载
B. 构造函数可以重载,析构函数不能重载
C. 构造函数可以重载,析构函数也可以重载
D. 构造函数不能重载,析构函数也不能重载
30、假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为( B )。
A. x.a B.x.a() C.x->a D.x->a()
31、下列关于构造函数的特点,其中描述错的是( B )。
A. 构造函数是一种成员函数,它具有一般成员函数的特点
B. 构造函数必须指明其类型
C. 构造函数的名称与其类名相同
D. 一个类中可以定义一个或多个构造函数
32、关于this指针使用说法正确的是( A )。
A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
B. 保证基类私有成员在子类中可以被访问。
C. 保证基类保护成员在子类中可以被访问。
D. 保证基类公有成员在子类中可以被访问。
33、下面对静态数据成员的描述中,正确的是( A C)。
A. 静态数据成员可以在类体内进行初始化
B. 静态数据成员不可以被类的对象调用
C. 静态数据成员可以直接用类名调用
D. 静态数据成员不能受private控制符的作用
34、下面对友元函数的描述中正确的是( C )。
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.在类中必须用friend声明友元函数。
D.友元函数不能访问类的私有成员
35、 如果类A被说明成类B的友元,则( D )。
A. 类B也一定是类A的友元 B. 类B的成员即类A的成员
C. 类A的成员即类B的成员 D. 类A的成员函数可以访问类B的成员
36、类模板的使用实际上是将类模板实例化成一个具体的( D C)。
A. 函数 B.对象 C. 类 D.模板类
37、假定一个类的构造函数为 A(int aa = 1, int bb = 0) {a = aa, b = bb;},则执行 A x(4); 语句后,x.a和x.b的值分别为:。A C
A. 1和0 B. 1和4 C. 4和0 D. 4和1
38、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( D A )。
A.public B.protected C.private D.static
39、在用关键字class定义的类中,以下叙述正确的是( A )。
A. 在类中,不作特别说明的数据成员均为私有类型
B. 在类中,不作特别说明的数据成员均为公有类型
C. 类成员的定义必须是成员变量定义在前,成员函数定义在后
D. 类的成员定义必须放在类定义体内部
40、下列情况中,不会调用复制构造函数的是( C )。
A. 函数的返回值是类的对象,函数执行返回调用时
B. 函数的形参是类的对象,调用函数进行形参和实参相结合
C. 将类的一个对象赋值给该类的另一个对象时
D. 用一个对象去初始化同一类的另一个新对象时
41、 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( A )。
A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员
42. 关于this指针使用说法正确的是( A )。
A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
B.保证基类私有成员在子类中可以被访问。
C. 保证基类保护成员在子类中可以被访问。
D. 保证基类公有成员在子类中可以被访问。
43、关于虚函数的描述中,( C )是正确的。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
44、关于运算符重载,下列表述中正确的是( B )。
A. 可以通过运算符重载来创建C++中原来没有的运算符
B. 在类型转换函数的定义中不需要声明返回类型
C. 运算符函数的返回类型不能声明为基本数据类型
D. C++已有的任何运算符都可以重载
45、以下( C )成员函数表示纯虚函数。
A.virtual int vf(int); B.void vf(int)=0;
C.virtual void vf()=0; D.virtual void vf(int){}
57、下列关于抽象类描述不正确的是( D )。
A.抽象类不能定义对象。
B.其派生类没有定义纯虚函数,则仍是抽象类。
C.其派生类定义所有纯虚函数,则是具体类。
D.不能定义指向抽象类的指针变量。
46、下列关于多继承二义性的描述中,错误的是:( B )。
A. 一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性
B. 基类和派生类中同时出现的同名函数,也存在二义性问题
C. 解决二义性的最常用的方法是对成员名的限定法
D. 一个派生类的两个基类中都有某个同名成员,派生类中这个成员的访问可能出现二义性
47、 对基类和派生类的关系描述中,错误的是( B )。
A. 派生类是基类的具体化 B. 基类继承了派生类的属性
C. 派生类是基类定义的延续 D. 派生类是基类的特殊化
48、设置虚基类的目的是( B )
A.简化程序 B.消除二义性 C.提高运行效率 D.减少目标代码
49、(D )不是构造函数的特征
A.构造函数的函数名与类名相同 B.构造函数可以重载
C.构造函数可以设置缺省参数 D.构造函数必须指定类型说明
50、有关多态性说法不正确的是( C )。
A. C++语言的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过模板和虚函数实现
D. 实现运行时多态性的机制称为动态多态性
51、关于多继承二义性的描述中,错误的是( D)。
A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性;
B.解决二义性的最常用的方法是对成员名的限定法;
C. 一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类
成员进行访问时,可能出现二义性;
D. 基类和派生类中同时出现的同名函数,也存在二义性问题;
52、 所谓多态性是指 ( B )。
A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数
C. 一个对象调用相同名称的函数 D. 一个对象调用不同名称的对象
53、下列打开文件的表达式中,错误的是:( A )。
A. cout.open(“C:\vc\abc.txt”,ios::binary);
B. ifstream ifile (“C:\vc\abc.txt”);
C. fstream iofile; iofile.open(“abc.txt”,ios::ate);
D. ofstream ofile; ofile.open(“C:\vc\abc.txt”,ios::binary);
54. 以下有关析构函数的叙述,不正确的是( A)。
A. 析构函数和构造函数一样可以有形参
B. 析构函数名前必须冠有符号“~”
C. 析构函数不允许用返回值
D. 在一个类只能定义一个析构函数
55、对于常数据成员,下面描述正确的是( B )。
A. 常数据成员必须被初始化,并且不能被修改
B. 常数据成员可以不初始化,并且不能被修改
C. 常数据成员可以不初始化,并且可以被修改
D. 常数据成员必须被初始化,并且可以被修改
56、在C++中,使用流进行输入输出,其中用于定义文件输入流对象的类是( B )。
A. ios B. ifstream C. ofstream D. istrstream
57、下列关于异常的叙述错误的是:( D )。
A. 只要是编程者认为是异常的都可当异常抛出
B. 硬件故障也可当异常抛出
C. 运行错属于异常
D. 编译错属于异常,可以抛出
58、假定 A 为一个类,则执行 A a1 ;语句时将自动调用该类的( B )。
A.有参构造函数 B.无参构造函数
C.拷贝构造函数 D.赋值构造函数
59、通常,拷贝构造函数的形参是( D )。
A. 本类对象名 B. 本类对象的指针名
C. 本类对象的成员名 D. 本类对象的引用名
60、下列不是类的成员函数的是( B )。
A. 构造函数 B. 友元函数 C. 析构函数 D. 拷贝构造函数
61、下面对静态数据成员的描述中,错误的是( C )。
A. 静态数据成员必须在类外进行初始化
B. public静态数据成员可以被类的对象调用
C. 静态数据成员不受private控制符的作用
D. 静态数据成员可以直接用类名调用
62、带默认参数的函数原型声明若有:void fun(int a,int b=7,char z=’
’);下面函数调用中,不合法的是( C )。
A. fun(1); B. fun(1,2);
C. fun( ); D. fun(1,2,‘a’);
63、cout是I0流库预定义的( B )。
A. 类 B. 对象 C. 包含文件 D. 常量
64、下面对静态数据成员的描述中,正确的是( D )。
A. 静态数据成员可以在类体内进行初始化
B. 静态数据成员不可以被类的对象调用
C. 静态数据成员不能受private控制符的作用
D. 静态数据成员可以直接用类名调用
65、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A )。
A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用
66、下面关于命名空间的说法,错误的是:A
A. 一个命名空间对应多个命名作用域
B. 一个命名空间中的标识符命名作用域相同
C. 一个命名空间中可以集合很多不同的标识符
D. 命名空间的引入让程序员可以在不同的模块中使用相同名字表示不同事物
67、关键字( C )说明对象或变量初始化后不会被修改。
A. static B. public C. const D.inline
68、下面有关重载函数的说法中正确的是( C )。
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
69、对基类和派生类的关系描述中,错误的是( B )。
A.派生类是基类的具体化 B.基类继承了派生类的属性
C.派生类是基类定义的延续 D.派生类是基类的特殊化
70、下列关于多继承二义性的描述中,错误的是( B )。
A. 一个派生类的两个基类中都有某个同名成员,派生类中这个成员的访问可能出现二义性。
B. 基类和派生类中同时出现的同名函数,也存在二义性问题。
C. 解决二义性的最常用的方法是对成员名的限定法。
D. 一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性。
71、下列有关C++类的说法中,不正确的是( D )。
A. 类是一种用户自定义的数据类型
B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员
C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的
D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的
72、C++ 中对于类中定义的成员,其默认的访问权限为( C )。
A. public B. protected C. private D. static
73、下面说法中,正确的是( D )
A. 一个类只能定义一个构造函数,但可以定义多个析构函数
B. 一个类只能定义一个析构函数,析构函数能够带参数
C. 构造函数与析构函数同名,其中构造函数名字前加了一个求反符号(~)
D. 构造函数和析构函数不可以指定返回类型
74、编译时的多态性可以通过使用( D )获得。
A. 虚函数和指针 B. 重载函数和析构函数
C. 虚函数和对象 D. 虚函数和引用
75、已知:fun( )函数是一个类的常成员函数,无返回值,下列表示中,( A )是正确的。
A. void fun ( ) const; B. const void fun ( );
C. void const fun ( ); D. void fun (const);
76、下列关于类的访问权限的描述中,错误的是( D )。
A. 说明为公有的成员可以被程序中的任何代码访问
B. 说明为私有的成员只能被类的成员和说明为友元类的成员函数访问
C. 说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该类的派生类的成员也可以访问
D. 类的所有成员都可以被程序中的任何代码访问
77、对虚函数使用对象指针或引用,系统使用( ),对虚函数使用对象调用时,系统使用( )联编。( D )
A. 静态联编、静态联编 B. 动态联编、动态联编
C. 静态联编、动态联编 D. 动态联编、静态联编
78、C++中解决命名冲突的机制是( D )。
A.虚基类 B.虚函数 C.函数重载 D.名称空间
79、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成
一个实体,这实体也就是( C )。
A. 函数体 B. 对象 C. 类 D. 数据块
80、下面描述中,表达错误的是( A )
A. 公用继承时基类中的private成员在派生类中仍是private的
B. 公用继承时基类中的public成员在派生类中仍是public的
C. 公用继承时基类中的protected成员在派生类中仍是protected的
D. 私有继承时基类中的public成员在派生类中是private的
81、设置虚基类的目的是( B )。
A. 简化程序 B. 消除二义性 C. 提高运行效率 D. 减少目标代码
82、 类的析构函数是在( C )被自动调用的。
A.类创建时 B.创建对象时 C. 删除对象时 D.不自动调用
83、下面( A )的叙述不符合赋值兼容规则。
A. 基类的对象可以赋值派生类的对象
B. 派生类指针可以指向基类对象
C. 派生类的对象可以初始化基类的对象
D. 派生类的对象的地址可以赋值给指向基类的指针
84、构造函数不具备的特征的是( D )。
A.构造函数的函数名与类名相同 B.构造函数可以重载
C.构造函数可以设置默认参数 D.构造函数必须指定返回类型
85、关于虚函数的描述中,( D )是正确的。
A. 虚函数是一个static类型的成员函数
B. 虚函数是一个友元函数
C. 基类中说明了虚函数后,派生类中与其对应的函数必须再次说明为虚函数
D. 派生类的虚函数与基类的虚函数具有相同的参数个数和类型
86、下列关于静态数据成员的说法,不正确的是( C )。
A. 类中定义的公用静态数据成员,可以通过类的对象来访问
B. 类中定义的所有静态数据成员,都必须在类外初始化
C. 静态数据成员不是所有对象所共用的
D. 普通的成员函数可以直接访问类中的静态数据成员
87、通常,拷贝构造函数的参数是( B )。
A. 某个对象名 B. 某个对象的引用名
C. 某个对象的成员名 D. 某个对象的指针名
88、关于运算符重载,下列表述中正确的是( C )。
A. C++已有的任何运算符都可以重载
B.运算符函数的返回类型不能声明为基本数据类型
C.在类型转换函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
89、如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用( D )关键字来修饰。
A. const B. static C.void D. class
90、以下( C )成员函数表示纯虚函数。
A. virtual int vf(int); B. void vf(int)=0;
C. virtual void vf()=0; D. virtual void vf(int){}
91、下列的各类函数中,( C )不是类的成员函数
A. 构造函数 B. 析构函数 C. 友元函数 D. 复制构造函数
92、一个类的友元函数或友元类可以访问该类的( D )。
A. 私有成员 B. 保护成员 C. 公有成员 D. 所有成员
93、实现运行时的多态性要使用( D )。
A. 重载函数 B. 构造函数 C. 析构函数 D. 虚函数
94. 所谓多态性是指( B )
A. 不同的对象调用不同名称的函数
B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数
D. 一个对象调用不同名称的对象
95、下面描述中,正确的是( A )。
A. virtual可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
96、在运算符重载函数中若双目运算符“+”是作为成员函数重载的运算符,则 operator+ 有 个参数,若“+”是作为友元函数重载的运算符。Operator+有 参数。( C )
A. 2、2 B. 2、1 C. 1、2 D. 1、1
97、下列关于C++与C语言的关系描述中,错误的是( D )。
A. C语言是C++语言的一个子集 B. C++与C语言是兼容的
C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的
98、应在下列程序划线处填入的正确语句是( C )。
#include <iostream.h>
class Base
{public:
void fun(){cout<<“Base::fun”<<ENDL;}
};
class Derived:public Base
{ void fun()
{_____________//显示调用基类的函数fun()
cout<<“Derived::fun”<<ENDL;
}
};
(A)fun(); (B)Base.fun(); (C)Base::fun(); (D)Base->fun();
99、对于语句 cin>>x;错误的是描述是( C )。
A.“x”是一个变量 B.“endl”的作用是输出回车换行
C.“cin”是一个输出流对象 D.“>>”称作提取运算符
100、 下列关于抽象类描述不正确的是( D )。
A.抽象类不能定义对象。
B.其派生类没有定义纯虚函数,则仍是抽象类。
C.其派生类定义所有纯虚函数,则是具体类。
D.不能定义指向抽象类的指针变量。
101、下列特性中,C与C++共有的是( D )。
A. 继承 B. 封装 C. 多态性 D. 函数定义不能嵌套
102、以下关于文件操作的叙述中,不正确的是( D )。
A. 打开文件的目的是使文件对象与磁盘文件建立联系
B. 文件读写过程中,程序将直接与磁盘文件进行数据交换
C. 关闭文件的目的之一是保证将输出的数据写入硬盘文件
D. 关闭文件的目的之一是释放内存中的文件对象
103、下列叙述错误的是( B )。
A. throw的操作数表示异常类型
B. throw的操作数值可以区别不同的异常
C. throw抛出不同异常时需要用不同的操作数类型来区分
D. throw语句抛出的异常可以不被捕获
104、执行下面的程序将输出( A )。
#include <iostream.h>
using namespace std;
class BASE{
char c;
public:
BASE(char n):c(n){}
virtual ~BASE(){cout<<c;}
};
class DERIVED:public BASE{
char c;
public:
DERIVED(char n):BASE(n+1),c(n){}
~DERIVED(){cout<<c;}
};
int main()
{DERIVED a(‘X’);
return 0;
}
(A)XY (B)YX (C)X (D)Y
105、下面描述中,正确的是( A )。
A. virtual可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
106、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是 ( C )。
(A)strstream (B)ostrstream
(C)ofstream (D)istrstream

猜你喜欢

转载自blog.csdn.net/qq_44621510/article/details/93756948
今日推荐