一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。共 15题 )
1. 在类中说明的成员可以使用关键字( )进行修饰。 a. private b. extern c. auto d. register
2. 如果类 a 被说明成类 b 的友元,则( )。 a. 类 a 的成员即类 b 的成员 b. 类 b 的成员即类 a 的成员
c. 类 a 的成员函数不得访问类 b 的成员 d. 类 b 不一定是类 a 的友元
3. 定义析构函数时,应该注意( )。 a. 其名与类名完全相同 b. 返回类型是 void 类型 c. 无形参,也不可重载
d. 函数体中必须有 delete 语句
4. 假定一个类的构造函数为 a(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 a x(4,5); 语句后, x.a 和 x.b 的值分别为( )。 a. 4 和 5 b. 5 和 4 c. 4 和 20 d. 20 和 5
5. 假定 ab 为一个类,则执行 ab x ;语句时将自动调用该类的( )。 a. 有参构造函数 b. 无参构造函数 c. 拷贝构造函数 d. 赋值构造函数
6. 如果 class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected ,则所有成员缺省定义为:( )。 a. public b. protected c. private d. static
7. 类的指针成员的初始化是通过函数完成的,这个函数通常是( )。 a. 析构函数 b. 构造函数 c. 其它成员函数 d. 友元函数
8. 在 c++ 中实现封装是借助于( )。 a. 枚举 b. 类 c. 数组 d. 函数
9. c++对c语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )。 a. 增加了一些新的运算符
b. 允许函数重载,并允许设置缺省参数 c. 规定函数说明符必须用原型 d. 引进了类和对象的概念
10. 下列不是描述类的成员函数的是( )。 a. 构造函数 b. 析构函数 c. 友元函数
d. 拷贝构造函数
11. 下面有关类说法不正确的是( )。 a. 一个类可以有多个构造函数 b. 一个类只有一个析构函数 c. 析构函数需要指定参数
d. 在一个类中可以说明具有类类型的数据成员
12. 下列不能作为类的成员的是( )。 a. 自身类对象的指针 b. 自身类对象
c. 自身类对象的引用 d. 另一个类的对象
13. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。 a. 类 b. 对象 c. 函数体 d. 数据块
14. 类的构造函数被自动调用执行的情况是在定义该类的( )。 a. 成员函数时 b. 数据成员时 c. 对象时
d. 友元函数时
15. 已知类 a 是类 b 的友元,类 b 是类 c 的友元,则( )。 a. 类 a 一定是类 c 的友元 b. 类 c 一定是类 a 的友元
c. 类 c 的成员函数可以访问类 b 的对象的任何成员 d. 类 a 的成员函数可以访问类 b 的对象的任何成员
二、程序分析题,请给出如下程序的执行结果 #include
class Clock {
private: int hour, minute, second; public:
Clock(int h=0, int m=0, int s=0) { hour=h; minute=m; second=s; } Clock(Clock &ck) { hour=ck.hour; minute=ck.minute; second=ck.second; cout <<\ cout < void func(Clock ckp) { ckp.Settime(8,15,23); } void main() { Clock ck1; int h=0, m=0, s=0; func(ck1); ck1.Gettime(h,m,s); cout <<\ Clock ck2(ck1); h=m=s=0; ck2.Gettime(h,m,s); cout <<\} 三、程序设计题 已知在point.h文件中有如下Point类的声明,请在point.cpp文件中完成类的定义,并在main.cpp文件中设计主函数测试Point类的功能。分别写出point.cpp文件和main.cpp文件的内容。 //point.h文件 #include class Point { public: Point(int=0, int=0);//构造函数 ~Point(); //析构函数 int GetX(); //获得点的x坐标 int GetY(); //获得点的y坐标 void SetPt(int, int); //重新设置点的x、y坐标 void OffsetPt(int, int);//在原来的坐标的基础上增加偏移量 private: int xVal, yVal; }; 参考答案: 一、单项选择题 1-5 a d c c b 6-10 c b b d c 11-15 c c a c d 二、程序分析题 Copy constructor: 0:0:0 Time: 0:0:0 Copy constructor: 0:0:0 Time: 0:0:0 三、程序设计题 1. point.cpp文件 #include \ Point::Point(int x, int y) :xVal(x),yVal(y) {} Point::~Point() { } void Point::SetPt (int x, int y) { xVal = x; yVal = y; } void Point::OffsetPt (int x, int y) { xVal += x; yVal += y; } int Point:: GetX () { return xVal; } int Point:: GetY () { return yVal; } main.cpp文件 #include int main() { Point p1,p2; p1.SetPt(0,0); p1.OffsetPt(-2,3); cout <<\ p2.SetPt(2,5); cout <<\ return 0; } X1:-2 Y1:3 X2:2 Y2:5 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。共 15题 ) 1. 下列说法中正确的是( )。 a. 类定义中只能说明函数成员的函数头,不能定义函数体 b. 类中的函数成员可以在类体中定义,也可以在类体之外定义 c. 类中的函数成员在类体之外定义时必须要与类声明在同一文件中 d. 在类体之外定义的函数成员不能操作该类的私有数据成员 2. 重载函数在调用时选择的依据中,错误的是( )。 a. 函数的参数 b. 参数的类型 c. 函数的名字 d. 函数的类型 3. 构造函数不具备的特征的是( )。 a. 构造函数的函数名与类名相同 b. 构造函数可以重载 c. 构造函数可以设置默认参数 d. 构造函数必须指定类型说明 4. 通常,拷贝构造函数的参数是( )。 a. 某个对象名 b. 某个对象的成员名 c. 某个对象的引用名 d. 某个对象的指针名 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++清考资料类和对象在线全文阅读。
相关推荐: