一、单项选择题 ( 本大题共 10 小题,每小题 2 分,共 20 分 ) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1. 下列特性中, c 与 c++ 共有的是 ( ) a. 继承 b. 封装 c. 多态性 d. 函数定义不能嵌套 2. 通常情况下,函数模板中的类型参数个数 不能 是 ( ) a.0 b.2 c.4 d.3 3. 在下列成对的表达式中,运算符“ + ”的意义 不相同 的一对是 ( ) 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 4. 类的指针成员的初始化是通过函数完成的,这个函数通常是 ( ) a. 析构函数 b. 构造函数 c. 其它成员函数 d. 友元函数 5. 要禁止修改指针 p 本身,又要禁止修改 p 所指向的数据,这样的指针应定义为 ( ) a.const char *p= “ abcd ”; b.char const *p= “ abcd ”; c.char *const p= “ abcd ”; d.const char * const p= “ abcd ”; 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. 寄存器变量 二、填空题 ( 本大题共 10 小题,每小题 2 分,共 20 分 ) 不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。 11. 设函数 max 是由函数模板实现的,并且 max(3.5,5) 和 max(10,5) 都是正确的函数调用,则该模板具有 ______ 个类型参数。 12. 在单继承和多继承方式中,面向对象的程序设计应尽量使用 ______ 继承。 13. 语句序列 ifstream datafile ; datafile.open( “ data.dat ” ) ; 的功能可用一个语句实现,这个语句是 ______ 。 14. 将关键字 const 写在函数头之后,函数体之前,说明该函数是一个 const 成员函数。此时 const 不是指定函数的返回值,而是修饰 ______ 指针。 15. 一个抽象类的派生类可以实例化的必要条件是实现了所有的 ______ 。 16. 在 c++ 中,虚函数帮助实现了类的 ______ 性。 17. 通过 c++ 语言中类的 ______ ,可以扩充和完善已有类以适应新的需求。 18. 为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义 ______ 。 19. 在联合中,所有数据成员具有 ______ 的地址,任一时刻只有 ______ 个数据成员有效。 20. 在已经定义了整型指针 ip 后,为了得到一个包括 10 个整数的数组并由 ip 所指向,应使用语句 ______ 。 三、改错题 ( 本大题共 5 小题,每小题 2 分,共 10 分 ) 21. 下面的类定义有一处错误,请用下横线标出错误所在行并改正错误。 class a{ int a; public; a(int aa):a=aa{ } }; 22. 下面的程序先把字符串“ look out! ”输出到一个文件中,然后再从该文件输入,并显示在屏幕上,显示效果为 look out! 。程序中有一处错误,请用下横线标出错误所在行,并给出更改意见。 # include void main(){ |