C++语言程序设计复习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C++程序设计》复习题
一、选择题
1.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )
A、类
B、对象
C、函数体
D、数据块
2.面向对象的程序设计语言必须具备的关键要素是( )
A、抽象和封装
B、抽象和多态性
C、抽象、封装、继承和多态性
D、抽象、封装和继承性
3.类的构造函数被自动调用执行的情况是在定义该类的( )
A、成员函数时
B、数据成员时
C、对象时
D、友元函数时
4.设有函数模板
template
Q Sum(Qx,Qy){
return(x)+(y);
}
则下列语句中对该函数模板错误的使用是( )
A、Sum(10,2);
B、Sum(5.0,6.7);
C、Sum(15.2f,16.0f);
D、Sum(″AB″,″CD″);
5.已知类A是类B的友元,类B是类C的友元,则( )
A、类A一定是类C的友元
B、类C一定是类A的友元
C、类C的成员函数可以访问类B的对象的任何成员
D、类A的成员函数可以访问类B的对象的任何成员
6.静态成员函数没有( )
A、返回值
B、this指针
C、指针参数
D、返回类型
7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中( )
A、都是虚函数
B、只有被重新说明时才是虚函数
C、只有被重新说明为virtual时才是虚函数
D、都不是虚函数
8.下面叙述不正确的是( )
A、派生类一般都用公有派生
B、对基类成员的访问必须是无二义性的
C、赋值兼容规则也适用于多重继承的组合
D、基类的公有成员在派生类中仍然是公有的
9.在C++中实现封装是借助于( )
A、枚举
B、类
C、数组
D、函数
10.所有在函数中定义的变量,都是( )
A、全局变量
B、局部变量
C、静态变量
D、寄存器变量
11.下列特性中,C与C++共有的是( )
A、继承
B、封装
C、多态性
D、函数定义不能嵌套
12.通常情况下,函数模板中的类型参数个数不能是( )
A、0
B、2
C、4
D、3
13.在下列成对的表达式中,运算符“+”的意义不相同的一对是( )
A、5.0+2.0和5.0+2
B、5.0+2.0和5+2.0
C、5.0+2.0和5+2
D、5+2.0和5.0+2
14.类的指针成员的初始化是通过函数完成的,这个函数通常是( )
A、析构函数
B、构造函数
C、其它成员函数
D、友元函数
15.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为( ) A、const char *p=“ABCD”;B、char const *p=“ABCD”;
C、char *const p=“ABCD”;
D、const char * const p=“ABCD”;
16.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为( )
A、operator*(i.operator++(),k)
B、operator*(operator++(i),k)
C、i.operator++().operator*(k)
D、k.operator*(operator++(i))
17.下列说法中正确的是( )
A、类定义中只能说明函数成员的函数头,不能定义函数体
B、类中的函数成员可以在类体中定义,也可以在类体之外定义
C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D、在类体之外定义的函数成员不能操作该类的私有数据成员
18.若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( )
A、私有成员
B、公有成员
C、保护成员
D、保护成员或私有成员
19.对基类和派生类的关系描述中,错误的是( )
A、派生类是基类的具体化
B、基类继承了派生类的属性
C、派生类是基类定义的延续
D、派生类是基类的特殊化
20.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( )
A、调用类A中的函数func()
B、调用类B中的函数func()
C、根据p所指的对象类型而确定调用类A中或类B中的函数func()
D、既调用类A中函数,也调用类B中的函数
答案:
1.B 2.C 3.C 4.D 5.D 6.B 7.A 8.D 9.B 10.B
11.D 12.A 13.C 14.B 15.D 16.B 17.B 18.A 19.B 20.A 二、填空题
1.假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为__________。
2.模板定义中标识类型的参数必须用关键字_________修饰。
3.表达式count< 4.通过C++语言中的_________机制,可以从现存类中构建其子类。 5.要在调用虚函数的时候强制进行静态联编,可以通过在调用中对虚函数加_________实现。 6.封装要求一个对象应具备明确的功能,并具有_________以便和其它对象相互作用。 7.在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。 8.静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是_________。 9.在下面的类定义中,私有成员有_________。 class Location { int X,Y; protected: int zeroX,zerxY; int SetZero(intzeroX, intzeroY); private: int length,height; public: void init(int initX,int initY); int GetX(); int GetY(); }; 10.类的私有成员只能被它的成员函数和_________访问。 11.在用C++进行程序设计时,最好用___________________代替malloc。 12.函数模板中紧随template之后尖括号内的类型参数都要冠以保留字________________。 13.在ios类中定义的用于控制输入输出格式的枚举常量中,用于代表十进制、八进制和十六进制的3个枚举常量是dec、oct和___________________。