面向对象程序的设计复习题

上传人:l**** 文档编号:135105906 上传时间:2020-06-12 格式:DOC 页数:17 大小:78.50KB
返回 下载 相关 举报
面向对象程序的设计复习题_第1页
第1页 / 共17页
面向对象程序的设计复习题_第2页
第2页 / 共17页
面向对象程序的设计复习题_第3页
第3页 / 共17页
面向对象程序的设计复习题_第4页
第4页 / 共17页
面向对象程序的设计复习题_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《面向对象程序的设计复习题》由会员分享,可在线阅读,更多相关《面向对象程序的设计复习题(17页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计复习题一、 单项选择题1. (A)是面向对象系统包含的要素。A、类B、多态C、友元D、重载2. 下列对常量的定义中,错误的是(C)。A、MyClass const obj(3,4);B、char * const p=hello;C、int &ref=2;D、void show() const;3. 若有如下函数声明:void Fun(int x);,则下列(D)能与该函数形成重载。A、void Fun(int y);B、void Fun(int x,int y=1);C、int Fun(int x);D、void Fun(int) const;4. 下列对构造函数和析构函数的描

2、述中,错误的是(B)。A、构造函数可以重载B、析构函数名与类名相同C、构造函数中可以设置参数的缺省值D、类中只有一个析构函数5. 下列对友元的描述中,错误的是(C)。A、友元破坏了类的封装性B、友元提高了程序的运行效率C、友元可以在类外声明和定义D、友元能够访问类中的私有成员6. 下列对继承的描述中,正确的是(A)。A、公有派生类对象能够访问基类的公有成员B、派生类只继承了基类的公有成员和保护成员C、派生类对象不能访问基类的保护成员D、派生类不改变基类成员的访问权限7. 程序中,编译时出错的语句是(D)。class Base ;class Derived : public Base ;Deri

3、ved objD1;Base objB=objD1;/ABase *pb=&objD1;/BBase &refB=objD1;/CDerived objD2=objB;/D8. 下面对派生类的描述中,正确的是(B)。A、派生类是对基类的抽象B、一个派生类可以作为另一个派生类的基类C、派生类只能有一个直接基类D、派生类的缺省继承方式是public9. 实现动态联编必须通过(A)调用虚函数。A、基类引用B、类名C、对象名D、构造函数10. C+流中重载的运算符,是一个(B)。A、用于输出操作的非成员函数B、用于输入操作的非成员函数C、用于输出操作的成员函数D、用于输入操作的成员函数11. (A)不

4、是基于对象系统包含的要素。A、多态B、对象C、类D、继承12. 下列对常量的定义中,错误的是(C)。A、int const size=10;B、char * const p=Good Luck;C、void const print();D、const MyClass obj(10,10);13. 设Address表示整型变量x的地址,则下列语句执行后的输出结果为(D)。int x=100,&r=x;coutx-rendl;A、Address-100B、100-AddressC、Address-AddressD、100-10014. 若函数原型为void Fun(int x=9,int y=8,

5、char z=7),则下列调用错误的是(B)。A、Fun()B、Fun(“hello”)C、Fun(1,2)D、Fun(2,4, a)15. 若有如下函数声明:void Fun(int x);,则下列(C)不能与该函数形成重载。A、void Fun(int x,int y);B、void Fun(double x);C、void Fun(int x,int y=1);D、void Fun(int x) const;16. 下列对构造函数和析构函数的描述中,正确的是(A)。A、析构函数不可以重载B、构造函数不能定义为联函数C、构造函数中不能设置参数的缺省值D、析构函数名与类名相同17. 下面对静

6、态成员的描述中,错误的是(C)。A、静态数据成员的提出是为了解决数据共享问题B、静态数据成员的初始化在类体外进行C、类的不同对象有不同的静态数据成员值D、静态成员函数可以直接访问类中的静态数据成员18. 下列对友元的描述中,正确的是(D)。A、友元可以在类外声明和定义B、友元降低了程序的运行效率C、友元不能访问类中的保护成员D、友元破坏了类的封装性19. 下列对继承的描述中,错误的是(C)。A、派生类对象不能访问基类的保护成员B、派生类对基类成员的访问权限随着继承方式而改变C、派生类成员可以访问基类的私有成员D、派生类继承了基类的所有数据成员20. 程序中,编译时出错的语句是(D)。class

7、 Base ;class Derived : public Base ;Derived objD1;Base objB=objD1;/ABase *pb=&objD1;/BBase &refB=objD1;/CDerived objD2=objB;/D21. 下面对派生类的描述中,错误的是(D)。A、派生类是对基类的具体化B、派生类能够作为基类继续派生新类C、派生类可以有多个直接基类D、派生类的缺省继承方式是private22. 实现动态联编不能通过(A)调用虚函数。A、构造函数B、基类引用C、基类指针D、基类指针或引用23. 下面(D)不是抽象类的特性。A、可以说明纯虚函数B、不能说明抽象类

8、的对象C、用做基类,提供公共的接口D、可以定义虚构造函数24. C+流中重载的运算符,是一个(B)。A、用于输出操作的成员函数B、用于输出操作的非成员函数C、用于输入操作的成员函数D、用于输入操作的非成员函数25:下列有关类的说法不正确的是( )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。26:下面( )项是对构造函数和析构函数的正确定义。Avoid X:X(), void X:X()BX:X(参数), X:X()

9、CX:X(参数), X:X(参数)Dvoid X:X(参数), void X:X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。27:( )的功能是对对象进行初始化。 A析构函数 B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C+编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C+编译系统自动调用析构函数注销该对象并进行善后工作;28:下列表达方式正确的是( )。Aclass P B class Ppublic: public:int x=15; int x; void show()

10、coutx; void show()coutx; ; C class P D. class P int f; public: ; int a; f=25; void Seta (int x) a=x;答案:D分析:在类体不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。29: 拷贝构造函数具有的下列特点中,( )是错误的。A 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B 拷贝构造函数至少有一个参数,并且是该类对象的引用C 拷贝构造函数是一种成员函数D 拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自

11、动生成一个默认的;拷贝构造函数至少有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。30:关于静态成员的描述中,( )是错误的。A 静态成员可分为静态数据成员和静态成员函数B 静态数据成员定义后必须在类体进行初始化C 静态数据成员初始化不能在构造函数中完成D 静态成员函数中不能直接引用非静态成员答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;

12、在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。31:关于友元的描述中,( )是错误的。A 友元函数是成员函数,它被说明在类体B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数答案:A分析:友元函数是非成员函数,在类体说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。二、 填空题1. 下列运算符既可以作为类的成员函数重载,也可以作为类的友元函数重载,请在表格中的空白处填上正确的表达式。表达式成员函数友元函数a+b(1)(2)a+(3)operator + (a)-aa.operator - ( )(4)1. 答案: (1) a.operator+(b) (2) operator +(a,b) (3) a.operator+()(4) operator (a)2. 下列程序执行后的输出结果是12,21,22,请将下列程序补充完整。#include void fun1(1), int b) int c; c=a; a=b; b=c; void fun2(2), int *b) int c; c=*a; (3); *b=c; void fun3(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号