C++复习资料.docx
- 文档编号:7208817
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:21
- 大小:33.31KB
C++复习资料.docx
《C++复习资料.docx》由会员分享,可在线阅读,更多相关《C++复习资料.docx(21页珍藏版)》请在冰点文库上搜索。
C++复习资料
C++复习资料
选择题
PTA
2-1
卜列函数中,(C)不能重载。
(2分)
A.
成员函数
B.
非成员函数
C.
析构函数
D.
构造函数
2-2
下列对重载函数的描述中,(A)是错误的。
(2分)
A.重载函数中不允许使用默认参数
B.重载函数中编译根据参数表进行选择
C.不要使用重载函数来描述亳无相干的函数
D.构造函数重载将会给初始化带来多种方式
2-3
设A为自定义类,现有普通函数intfun(A&x)°则在该函数被调用时:
C(2分)Aa;
Func(a);
A.将执行复制构造函数来初始化形参x
B.仅在实参为常量时,才会执行复制构造函数以初始化形参x
C.无需初始化形参x
D.仅在该函数为A类的友元函数时,无需初始化形参x
2-4
类成员的默认访问属性是:
A(2分)
A.
private
B.
protected
C.
public
D.
以上答案都不对
2-5
所有类都应该有:
C(2分)
A.
构造函数
B.
析构函数
C.
构造函数和析构函数
D.
以上答案都不对
2-6
析构函数可以返回:
D(2分)
A.
指向某个类的指针
B.
某个类的对彖
C.
状态信息表明对象是否被正确地析构
D.
不可返回任何值
2-7
对于以下关于友元的说法D(2分)
A.
如果函数fun被声明为类A的友元函数,则该函数成为A的成员函数
B.
如果函数fun被声明为类A的友元函数,则该函数能访问A的保护成员,但不能访问私
有成员
C.
如果函数fun被声明为类A的友元函数,则fun的形参类型不能是A。
D.
以上答案都不对
2-8
对于类之间的友元关系:
D(2分)
A.
如果类A是类B的友元,则B的成员函数可以访问A的私有成员
B.
如果类A是类B的友元,则B也是A的友元。
C.
如果类A是类B的友元,并且类B是类C的友元,则类A也是类C的友元。
D.以上答案都不对。
2-9
友元的作用是A(2分)
A.
提高程序的运用效率
B.
加强类的封装性
C.
实现数据的隐藏性
D.
増加成员函数的种类
2-10
给定以下类声明,哪个成员函数可能改变成员变量data?
D(2分)
classA{
public:
voidfl(intd);
voidf2(constint&d);
{
data=d;
}
voidf3(intd)const;
private:
intdata;
};
A.fl
B.f2
C.f3
D.fl和f2
2-1
关于动态绑定的卞列描述中,(D)是错误的。
(2分)
A.动态绑定是以虚函数为基础的
B.动态绑定在运行时确定所调用的函数代码
C.动态绑定调用函数操作是通过指向对彖的指针或对象引用来实现的
D.动态绑定是在编译时确定操作函数的
2-2
关于虚函数的描述中,(C)是正确的。
(2分)
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
2-3
关于纯虚函数和抽彖类的描述中,(C)是错误的。
(2分)
A.纯虚函数是一种特殊的虎函数,它没有具体的实现
B.抽象类是指具有纯虎函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽彖类只能作为基类来使用,其纯虚函数的实现由派生类给出
2-4
一个类的私有成员B(2分)
A.只能被该类的成员函数访问
B.只能被该类的成员函数和友元函数访问
C.只能被该类的成员函数、友元函数和派生类访问
D.以上答案都不对
2-5
下列有关继承和派生的叙述中,正确的是:
C(2分)
A.派生类不能访问通过私有继承的基类的保护成员
B.多继承的虚基类不能够实例化
C.如果基类没有默认构造函数,派生类就应当定义带形参的构造函数
D.类的的析构函数和虎函数都不能够被继承,需要在派生类中重新实现
2-6
以下关于C++语言中继承的叙述中,错误的是(D)。
(2分)
A.继承是父类和子类之间共享数据和方法的机制
B.继承定义了一种类与类之间的关系
C.继承关系中的子类将拥有父类的全部属性和方法
D.继承仅仅允许单继承,即不允许一个子类有多个父类
2-1
使用操作符setw对数据进行格式输出时,需要包含(C)文件。
(2分)
A.
iostream.h
B.
fstream.h
C.
iomanip.h
D.
stdlib.h
2-2
关于动态绑定的卞列描述中,(D)是错误的。
(2分)
A.动态绑定是以虚函数为基础的
B.动态绑定在运行时确定所调用的函数代码
C.动态绑定调用函数操作是通过指向对彖的指针或对象引用来实现的
D.动态绑定是在编译时确定操作函数的
2-3
关于虚函数的描述中,(C)是正确的。
(2分)
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
2-4
关于纯虚函数和抽彖类的描述中,(C)是错误的。
(2分)
A.纯虚函数是一种特殊的虎函数,它没有具体的实现
B.抽象类是指具有纯虎函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽彖类只能作为基类来使用,其纯虚函数的实现由派生类给出
2-5
下列描述中,(D)是抽象类的特性。
(2分)
A.
可以说明虚函数
B.
可以进行构造函数重载
C.
可以定义友元函数
D.
不能定义该类对彖
2-6
cout是由I/O流库预定义的(B)。
(2分)
A.
类
B.
对象
C.
包含文件
D.
常量
2-7
下列表达错误的是(B)。
(2分)
A.cout«setw(5)
B.cout«fill('#')
C.cout.setf(ios:
:
uppercase)
D.cin.fillC#')2-8
一个类的私有成员B(2分)
A.只能被该类的成员函数访问
B.只能被该类的成员函数和友元函数访问
C.只能被该类的成员函数、友元函数和派生类访问
D.以上答案都不对
2-9
在派生类对基类继承的传递性中,C_是错误的。
(2分)
A.在公有继承方式卞,直接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
B.在公有继承方式卞,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
C.在私有继承方式卞,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类的私有数据成员
D.不管是私有继承还是公有继承,基类中的私有成员在派生类的作用域内都是不可能见的。
2-10
下列有关继承和派生的叙述中,正确的是:
C(2分)
A.派生类不能访问通过私有继承的基类的保护成员
B.多继承的虚基类不能够实例化
C.如果基类没有默认构造函数,派生类就应当定义带形参的构造函数
D.类的的析构函数和虎函数都不能够被继承,需要在派生类中重新实现
2-11
在C++语言中设置虚基类的目的是(C)。
(2分)
A.简化程序代码
B.提高程序的运行效率
C.解决多继承造成的二义性问题
D.缩短程序的目标代码
2-12
以下关于C++语言中继承的叙述中,错误的是(D)。
(2分)
A.继承是父类和子类之间共享数据和方法的机制
B.继承定义了一种类与类之间的关系
C.继承关系中的子类将拥有父类的全部属性和方法
D.继承仅仅允许单继承,即不允许一个子类有多个父类
一、选择(20题20分)
1.关于string类的说法不正确的是()B
A.string类的两个对彖可以直接用关系运算符比较人小。
比如sl>s2o
B.string类的两个对象不能直接相加,如表达式sl+s2语法错误。
C.string是C++标准模板库中的一个字符串类,包含在头文件string中
D.string类对彖中存储的字符串的长度不能用strlen()函数计算。
2.关于引用的说法正确的是()C
A.引用用&来标识,定义引用时可以只声明引用,不需要对引用初始化。
B.引用不能用不同类型的变量进行初始化。
C.引用主要用作函数参数,以扩充函数传递数据的功能。
D.以上说法均不正确。
3.下列对重载函数的描述中,()是错误的。
APTA
A.重载函数中不允许使用默认参数
B.重载函数中编译根据参数表进行选择
C.不要使用重载函数来描述亳无相干的函数
D.构造函数重载将会给初始化带来多种方式
4.下面有关类说法不正确的是()C
A.一个类可以有多个构造函数
B.一个类只有一个析构函数
C.析构函数需要指定参数
D.在一个类中可以说明具有类类型的数据成员
5.类成员的默认访问属性是(A)
A.private
B.protected
C.public
D.以上答案都不对
6.this指针存在的目的是()C
A.保证基类私有成员在子类中可以被访问
B.保证基类保护成员在子类中可以被访问
C.保证每个对彖拥有自己的数据成员,但共享处理这些数据成员的代码
D.保证基类公有成员在子类中可以被访问
7.静态成员函数没有()B
A.返回值
B.this指针
C.指针参数
D.返回类型
8.类MyClass的拷贝初始化构造函数是()C
A.MyClass()
B.MyClass(MyClass*)
C.MyClass(MyClass&)
D.MyClass(MyClass)
9.关于静态成员函数及常成员函数的说法不正确的是()B
A.静态成员函数用static关键字声明,且static在函数首部的最前面;常成员函数用const关键字声明,但const需要放在函数首部的最后面。
B.静态成员函数只能访问静态数据成员。
C.常对彖只能调用常成员函数。
D.常成员函数可以访问类中的const数据成员及非const数据成员,但不可改变它们。
10.—个类的私有成员()B
A.只能被该类的成员函数访问
B.只能被该类的成员函数和友元函数访问
C.只能被该类的成员函数、友元函数和派生类访问
D.以上答案都不对
□.C++类体系中,不能被派生类继承的有()B
A.常成员函数
B.构造函数
C.虚函数
D.静态成员函数
12.在公有继承的情况卞,基类的公有或保护成员在派生类中的访问权限()B
A.受限制B.保持不变C.受保护D.不受保护
13.在C++语言中设置虎基类的目的是()C
A.简化程序代码
B.提高程序的运行效率
C.解决多继承造成的二义性问题
D.缩短程序的目标代码
14.关于纯虎函数和抽彖类的描述中,(C)是错误的。
A.纯虚函数是一种特殊的虎函数,它没有具体的实现
B.抽彖类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
15.有关多态性说法不正确的是()C
A.C++语言的多态性分为编译时的多态性和运行时的多态性
B.编译时的多态性可通过函数重载实现
C.运行时的多态性可通过模板和虚函数实现
D.实现运行时多态性的机制称为动态多态性
16•实现两个相同类型数加法的函数模板的声明是()D
A.add仃x,Ty)
B.Tadd(xzy)
C.Tadd(Tx,y)
D.Tadd(Tx,Ty)
17.已知类模板的定义如下:
template
classApublic:
A(Tx):
item(x){};
TfuncfTa);
friendvoidshow(constA
template
friendvoiddisp(U&u);
private:
Titem;
};
以下说法不正确的是()A
A.用类A声明对彖a的语句是A
推演类A的数据类型是int。
B.类外定义函数func()的基本格式是
template
TA
:
func(Ta){...//语句序列};
C.友元函数show()的定义格式是
voidshow(constA
D.友元函数disp()的定义格式是
template
voiddisp(T&t){...//语句序列};
18.下列表达错误的是()B
A.cout«setw(5)
B.cout«fill('#')
C.cout.setf(ios:
:
uppercase)
D.cin.fillC#')
19.下列关于异常处理的说法不正确的是()C
A.异常处理的throw与catch通常不在同一个函数中,实现异常检测与异常处理的分离。
B.catch语句块必须跟在try语句块的后面,一个try语句块后可以有多个catch语句块。
C.在对函数进行异常规范声明时,若形参表后没有任何表示抛出异常类型的说明,它表示
该函数不能抛出任何异常。
D.catch语句块中,catch(...)表示该catch可以捕捉任意类型的异常,必须将catch(..J放在catch
结构的最后。
20.有关STL容器的说法不正确的是()C
A.序列式容器中的数据的顺序与数据的操作顺序相关,而关联式容器中的数据的顺序由数
据的关键字大小决定,与数据的操作顺序无关。
B.如果需要执行人量的随机访问操作,就应当选择向屋容器:
如果需要执行人量的随机插
入或删除元素操作,就应当选择列表容器。
C.关联型容器内部结构实现为一个二叉树,它可以高效地查找容器中的每一个元素,能够
实现任意位置的操作。
D.集合中的元素不可能直接被修改,若要修改某一元素的值,必须先删除原有的元素,再
插入新的元素。
一、选择题(20分)
1.关于类和对象不正确的说法是:
(C)
A.类是一种类型,它封装了数据和操作
B.对象是类的实例
C.一个类的对象只能有一个
D.一个对象必属于某个类
2.关于new运算符的下列描述,(D)是错误的。
A.它可以用来动态创建对象和对象数组
B.使用它创遂的对象或对象数组,可以使用运算符delete删除
C.使用它创建对象时要自动调用构造函数
D.使用它创建数组时不可以对数组初始化
3.类成员的默认访问属性是:
A
A.
private
B.
protected
C.
public
D.
以上答案都不对
4.假定MyClass为一个类,则该类的拷贝构造函数的声明语句为(C)
5.
A.MyClass(MyClassx)
B.MyClass&(MyClassx)
6.对于类之间的友元关系:
D
A.如果类A是类B的友元,则B的成员函数可以访问A的私有成员
B.如果类A是类B的友元,则B也是A的友元。
C.如果类A是类B的友元,并且类B是类C的友元,则类A也是类C的友元。
D.以上答案都不对。
7.要让一个类的所有对象具有共同的数据,可使用(C)。
A常数据成员B私有数据成员
C静态数据成员D以上都是
8.对于常成员函数,下列描述正确的是(C)
A.常成员函数只能修改常数据成员
B.常成员函数只能修改一般数据成员
C.常成员函数不能修改任何数据成员
D.常成员函数只能通过常对象调用
9.基类Base及它的派生类Drive类都有无参的构造函数,则下面语句错误的是(B)。
A
Baseb;
Drived;
b=d;
B
Baseb;
Drived;
d=b;
C.
Drive*pd;
Drived;
pd二&d;
D.
Base*pb;
Drived;
pb二&d;
10.在C++语言中设置虚基类的目的是(C)。
A.简化程序代码
B.提高程序的运行效率
C.解决多继承造成的二义性问题
D.缩短程序的目标代码
11.下列关于虚函数的描述中,(C)是正确的。
A虚函数是一个static类型的成员函数
B虚函数是一个非成员函数
C基类中说明了虚函数后,派生类中与其对应的函数可以不必加virtual关键字,自动成为虚函数
D派生类的虚函数与丛类中的虚函数具有不同的参数个数和参数类型
12.下列有关继承和派生的叙述中,正确的是:
C
A.派生类不能访问通过私有继承的基类的保护成员
B.多继承的虚基类不能够实例化
C.如果基类没有默认构造函数,派生类就应当定义带形参的构造函数
D.类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
13.下列关于运算符重载的描述中,错误的是(B)。
A运算符重载不改变优先级
B所有的运算符都可以重载
C运算符重载不改变结合性
D运算符重载函数的参数个数与重载方式有关
14.cout是由I/O流库预定义的(B)。
E.类
F.对象
G.包含文件
H.常量
15.下列关于模板的描述正确的是(A)
A.函数模板在调用时可以显式指定实例化的数据类型,也可以根据传入的实参推演得出其实例化的数据类型
B.类模板在调用时可以显式指定实例化的数据类型,也可以根据传入的实参推演得出其实例化的数据类型
C.模板参数可以是类型参数、非类型参数,不能是另一个模板
D.类模板只能派生类模板,不能派生普通类
15•要求打开文件D:
\file.dat,并能够写入数据,正确的语句是(D)。
A.ifstreaminfile("D:
\\file.dat",ios:
:
in);
B.ifstreaminfile("D:
\\file.dat",ios:
:
out);
C.ofstreamoutfileC'DWfile.dat",ios:
:
in);
D.fstreaminfile("D\\file.dat",ios:
:
in|ios:
:
out);
16•现有程序代码如下,输出结果为(C)classMyException{
public:
MyException(){cout«HA}
MyException(constMyException&ref){cout«HB}
^MyExceptionO{cout«NC}
};
voidfunc(){
throwMyException();
}
intmain(){
try{
func();
cout«HD
}catch(MyException&e){
cout«"E
}
return0;
}
A.ABCDEB.ADBEC
C.AECD.ABECC
17.以下关于异常处理的描述错误的是(D)
A.C++程序中出现异常时,编译器不会进行提示
B.将可能产生异常的代码放在try语句块内
C.使用catch关键字接收并处理异常
D.重抛异常可以在try语句块或者catch语句块中调用throw实现
18.STL中的哪个容器可以使用[]运算符进行随机访问?
(A)
A.vectorBsetCListDmultimap
19.下列程序代码的输出结果是(C)
intmain()
{
deque
for(inti=0;i d[i]=i; d.push_front(ll); d.insert(d.begin()+2,22); d.pop_back(); d.erase(d.begin()+3); for(inti=0;i cout«d.at(i)«" cout«endl; return0; 20.以下哪个函数不属于STL中的算法? (B) D.sort() A.for_each()B.insert()Cfind() 函数及编程题 1.友元函数题 现有一个类Point表示—.维空间中的点,包含私有数据成员doublex和doubley,x表示该点的x坐标,y表示该点的y坐标。 要求编写一个友元函数,输出两点之间的距离。 函数接口说明: 输出两个点pl和p2之间的距离,要求输出结果必须保留两位小数voidpointDis(Point&pl,Point&p2); 输入说明: 每一行四个数值,前两个数是第一个坐标点的X坐标和y坐标,后两个数是第二个坐标点的x坐标和y坐标。 当输入四个0时表示输入结束。 输出说明: 输出距离必须保留两位小数。 输入样例: 1.53.84.28.5 1347 0000 输出样例: 5.42 5.00 给出代码: #include #include #include usingnamespacestd; classPoint{ public: Point(){ } Point(doublepx,doublepy){ x=px; y=py; } friendvoidpointDis(Point&pl,Point&p2); private: doublex; doubley; }; 〃请在这里填写答案 intmain(){ doublexl,ybx2,y2; cin»xl»yl»x2»y2; Pointpl,p2; while(! (xl==O&&yl==O&&x2==0&&y2==0)){ pl=Point(xl,yl); p2=Point(x2,y2);pointDis(pl,p2); cin»xl»yl»x2»y2; } return0; } 2.友元函数题 现有学生类(Student),包含私有数据成员: 学号(sno,string类型)、姓名(sname,string类型)及C++考试成绩(cpp_score,double类型)。 要求: 用类Student建立学生对彖数组,不超过100名学生。 输入学生的学号、姓名及C++考试成绩,以输入0结束,计算输出所有学生的C++平均成绩。 其中,平均成绩用友元函数voidaverage(Student*ps,intcount)计算。 注意: (1)以上类名和友元函数的形式,均须按照题目要求,不得修改: (2)结果保留1位小数。 输入样例: 10001Tom90 10002Jerry93 0 输出样例: 91.5 #inelude #inelude #inelude usingnamespacestd; classStudent { public: Student(){}; Student(string,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)