面向对象程序设计试题一

学而不思则惘,思而不学则殆

面向对象程序设计试题一

2011/4/30下载

一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 2 分,共 40 分 ) 1. 在 ( ) 情况下适宜采用 inline 定义内联函数。 a. 函数体含有循环语句 b. 函数体含有递归语句 c. 函数代码少、频繁调用 d. 函数代码多、不常调用

2. 在类中说明的成员可以使用关键字 ( ) 进行修饰。 a. private b. extern c. auto d. register

3. 如果类 a 被说明成类 b 的友元,则 ( ) 。 a. 类 a 的成员即类 b 的成员 b. 类 b 的成员即类 a 的成员

c. 类 a 的成员函数不得访问类 b 的成员 d. 类 b 不一定是类 a 的友元

4. 定义析构函数时,应该注意 ( ) 。

a. 其名与类名完全相同 b. 返回类型是 void 类型

c. 无形参,也不可重载 d. 函数体中必须有 delete 语句 5. 在类中声明转换函数时不能指定 ( ) 。 a. 参数 b. 访问权限 c. 操作 d. 标识符

6. 在派生类中重新定义虚函数时必须在 ( ) 方面与基类保持一致。 a. 参数类型 b. 参数名字 c. 操作内容 d. 赋值

7. 在公有继承的情况下,基类成员在派生类中的访问权限 ( ) 。 a. 受限制 b. 保持不变 c. 受保护 d. 不受保护

8. 通过 ( ) 调用虚函数时,采用动态束定。 a. 对象指针 b. 对象名 c. 成员名限定 d. 派生类名

9. 在 int a=3,*p=&a; 中, *p 的值是 ( ) 。 a. 变量 a 的地址值 b. 无意义 c. 变量 p 的地址值 d. 3

10.c++ 类体系中,不能被派生类继承的有 ( ) 。 a. 转换函数 b. 构造函数 c. 虚函数 d. 静态成员函数

11. 假定一个类的构造函数为 a(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 ax(4,5); 语句后, x.a 和 x.b 的值分别为 ( ) 。 a. 4 和 5 b. 5 和 4 c. 4 和 20 d. 20 和 5

12. 假定 ab 为一个类,则执行 ab x ;语句时将自动调用该类的 ( ) 。

学而不思则惘,思而不学则殆

a. 有参构造函数 b. 无参构造函数 c. 拷贝构造函数 d. 赋值构造函数 13.c++ 语言建立类族是通过 ( ) 。 a. 类的嵌套 b. 类的继承 c. 虚函数 d. 抽象类

14. 执行语句序列 ofstream outf( “ salary.dat ” ) ; if(...)cout<< “成功”; else cout<< “失败”;后,如文件打开成功,显示”成功”,否则显示”失败” . 由此可知,上面 if 语句的条件表达式是 ( ) 。 a. !outf 或者 outf.fail() b.!outf 或者 outf.good() c. outf 或者 outf.fail() d. outf 或者 outf.good()

15. 静态成员函数不能说明为 ( ) 。 a. 整型函数 b. 浮点函数 c. 虚函数 d. 字符型函数

16. 在 c++ 中,数据封装要解决的问题是 ( ) 。 a. 数据规范化排列 b. 数据高速转换 c. 避免数据丢失 d. 保证数据完整性 17. 在 c++ 中有以下 4 条语句: static int hot=200;int &rad=hot;hot=hot+100;cout

18. 如果 class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected ,则所有成员缺省定义为: ( ) 。 a. public b. protected c. private d. static

19.c++ 设置虚基类的目的是 ( ) 。 a. 消除二义性 b. 简化程序

c. 提高运行效率 d. 减少目标代码 20. 实现运行时的多态性用 ( ) 。 a. 重载函数 b. 构造函数 c. 析构函数 d. 虚函数

二、填空题 ( 每空 2 分,共 20 分 )

1. 派生类可以定义其 ________ 中不具备的数据和操作。 2. 当建立一个新对象时,程序自动调用 ________ 。

3. 定义 ________ 函数时,应在参数个数或参数类型上有所不同。 4. 类是用户定义的类型,具有 ________ 称作对象。

5. 使用指向对象的指针来标识类的成员,则必须使用的运算符是 ________ 。 6. 拷贝初始化构造函数使用 ________ 来初始化创建中的对象。 7. 在一个类中可以对一个操作符进行 ________ 重载。 8. 在 c++ 中有二种参数传递方式: ________ 。 9. 多态性通过 ________ 来实现的。

10. 使用空的虚函数可以保证基类到派生类建立起一条 ________ ,使派生类通过虚函数机制正确存取虚函数。

三、完成程序题 ( 每小题 5 分,共 20 分 )

学而不思则惘,思而不学则殆

1. 在下面程序的底画线处填上适当的字句,使该程序执行结果为 10 。 #include

class base{int x; public :

________ ∥为 x 置值 ________ ∥取 x 值 };

void main() { base test; test.init(3); cout<}

2. 在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。 #include

class box{ private ∶

int color;int upx,upy;int lowx,lowy; public :

friend int same - color(line a,box b); ________ set - color(int c){color=c;}

void define - box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;} };

class line{ private:

int color;int startx,starty;int len; public:

friend - int same - color(line a,box b); ________set - color(int c){color=c;} void define - line(int x,int y){startx=x;} };

int same - color(line a,box b) {if(a.color= =b.color) return 1; return 0;}

3. 在下面程序的底画线处填上适当的字句,完成程序。 #include class a{

public ∶ void f(int i){cout

class ________{

public ∶ void h(){cout<< ” h \ n ” ;} a ∶∶ f; };

void main() { b d1; d1.f(6);

________.h();

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4