C++面向对象程序设计考试试题答案 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案, 并将其号码填在题干后的括号内。每小题1分,共20分) 1. 面向对象程序设计将数据与____a____放在一起,作为一个相互依存、不可 分割的整体来处理。 A.对数据的操作 B.信息 C.数据隐藏 D.数据抽象 2. ____a____不是面向对象系统所包含的要素。 A.重载 B.对象 C.类 D.继承 3. 按照标识符的要求,____a____符号不能组成标识符。 A.连接符 B.下划线 C.大小写字母 D.数字字母 4. 已知ch是字符型变量,下面正确的赋值语句是___b_____。 A.ch=’123’; B.ch=’\\xff’; C.ch=’\\08’; D.ch=”\\”; 5. 要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用 ____a____。 A.内联函数 B.递归调用 C.重载函数 D.嵌套调用 6. ____c____的功能是对对象进行初始化。 A.析构函数 B.数据成员 C.构造函数 D.静态成员函数 7. 在下列关键字中,用以说明类中公有成员的是___a_____。 A.public B.private C.protected D.friend 注:1.试题字迹务必清晰,书写工整。 本题6页,本页为第1页
2.题间不留空,一般应题卷分开 试题编号: 3.务必用A4纸打印
课程名称:面向对象的技术与方法 任课教师:唐宁九 学号: 姓名: 8. _____D___无返回类型,但又有return语句。 A.虚函数 B.内联函数 C.友元函数 D.类型转换函数 9. 类模板的使用实际上是将类模板实例化成一个具体的___A_____。 A.类 B.对象 C.函数 D.模板类 10. 利用友元函数重载“>>”运算符,第2个参数必须为___c_____。 A.指针 B.对象 C.引用 D.无值 11. 用成员函数重载二元运算符@,则显式调用方式为__C______。 A.obj1.operator@(obj2) B.operator@(obj1,obj2) C.obj1.operator@( ) D.obj1@obj2 12. 通常拷贝构造函数的参数是___c_____。 A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 13. 已知一个类A,_____B___是指向类A成员函数的指针。假设类有三个公有成 员:void f1(int),void f2(int)和int a。 A.A *p B.int A::*pc=&A::a C.void A::*pa D.A *pp 14. 用struct定义类,若它的成员缺省段约束符的说明,其成员是____b____的 成员。 A.私有段 B.公有段 C.特殊段 D.保护段 15. 下列定义中,___A____是定义指向数组的指针p。 A.int *p[5] B.int (*p)[5] C.(int *)p[5] D.int *p[] 16. C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系 统的运行;另一种是通过_____c___,派生出新的类。 A.复用 B.单继承 C.继承 D.多继承 17. 派生类的对象对它的基类成员中___A_____是可以访问的。 A.公有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.私有继承的公有成员 18. 说明静态成员函数的关键字为_____a___。 A.static B.virtual C.friend D.void 本题14页,本页为第2页
课程名称:面向对象的技术与方法 任课教师:唐宁九 学号: 姓名: 19. 下列运算符中,_____c___运算符在C++中不能重载。 A.?: B.+ C.- D.<= 20. cin是____b____类的标准对象的引用。 A.ostream B.istream C.stdin D.stdout 二、多项选择题(在每小题的五个备选答案中,选出若干个正确的答 案,并将其号码分别填在题干后的括号内;多选、少选、错选均无分。 每小题2分,共10分) 1. 若给出函数声明: void f(int a=1,int b=2,int c=3,int d=4); 下面的函数调用合法的有___ABD_____。 A.f( ) B.f(5) C.f(5,6) D.f(5,6,7) E.f(5,6,7,8) 2. 不能用友元函数重载的运算符有___ABDE_____。 A.= B.[ ] C.+ D.-> E.( ) 3. 对一元运算符进行重载后,正确的显式调用方式有___BD_____。 A.@a B.operator@(a) C.a@b D.a.operator@( ) E.a@ 4. 关于构造函数,正确的描述有___BD____。 A.可以是虚函数 B.可以有参数 C.可以被继承 D.可以重载 E.可以显式调用 5. C++的模板有____DE____模板。 A.运算符 B.数据 C.类型 D.类 E.函数 三、名词解释(每小题2分,共8分) 1. 封装性:封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员。 本题14页,本页为第3页
课程名称:面向对象的技术与方法 任课教师:唐宁九 学号: 姓名: 2. 类:实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。 3. 构造函数:是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载 4. 内联函数:,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(,从而节省了每次调用函数带来的额外时间开支。 四、判断分析题(判断正误,将正确的划上“√”,错误的划上“╳”, 并简述理由。每小题3分,共12分) 1. 空类就是没有名字的类。错。空类是没有任何成员的类 2. 引用类型和指针类型作为函数的形式参数时,对调用函数的实际参数的要 求是一样的,均是地址。错 3. 在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员, 则不可调整它的访问。错。因为基类构造函数的调用顺序是按照派生类定义时的顺序,而内嵌对象构造函数调用顺序应该按照成员在类中声明的顺序.两种都可以控制 4. 对象数组在创建时要求构造函数不能有任何参数。 错。静态数据成员是一个类的多个对象共享的 五、读程序、得结果(每小题5分,共20分) 1. #include 课程名称:面向对象的技术与方法 任课教师:唐宁九 学号: 姓名: void setb(int x){b=x;} void showb(){cout< class csample { private: int i ; static int k; public: csample(); void display(); }; csample::csample(){i=0;k++;} void csample::display(){cout<<”i=”< class sample { int x; public: void setx(int i){x=i;} int putx(){return x;} }; main() 本题14页,本页为第5页