《面向对象方法与技术》复习参考题
一、单项选择题(120=20分)
1. 下列特性中,C与C++共有的是( D )
A.继承 B.封装
C.多态性 D.函数定义不能嵌套
2. 对类的构造函数和析构函数描述正确的是___A___。
A)构造函数可以重载,析构函数不能重载
B)构造函数不能重载,析构函数可以重载
C)构造函数可以重载,析构函数也可以重载
D)构造函数不能重载,析构函数也不能重载
3.下面叙述不正确的是___D___
A.派生类一般都用公有派生
B.对基类成员的访问必须是无二义性的
C.赋值兼容规则也适用于多重继承的组合
D.基类的公有成员在派生类中仍然是公有的
4.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为__A____。
A)public
B)protected
C)private
D)static
5. 关于构造函数的说法错误的是__A_
A.构造函数只有一个
B.构造函数无任何函数类型
C.构造函数名与类名相同
D.构造函数在说明对象时自动执行
6. 对于常数据成员,下面描述正确的是___B____。
A)常数据成员可以不初始化,并且不能更新
B)常数据成员必须被初始化,并且不能更新
C)常数据成员可以不初始化,并且可以被更新
D)常数据成员必须被初始化,并且可以被更新
7.对于常成员函数,下面描述正确的是__C___。
A)类的成员函数可以操作常对象
B)类的成员函数不能操作常对象
C)只有常成员函数可以操作常对象
D)在常成员函数中,常对象可以被更新
8. 一个函数功能不太复杂,但要求被频繁调用,选用__A_____
A.内联函数 B.重载函数
C.递归函数 D.嵌套函数
9.下列关于友元的描述中,错误的是___D___
A.友元函数可以访问该类的私有数据成员 B.一个类的友元类的成员函数都是这个类的友元函数
C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承
10.假定AB为一个类,则执行AB x;语句时将自动调用该类的___B___。
A.有参构造函数 B.无参构造函数
C.拷贝构造函数 D.赋值构造函数
11.下面的描述中,正确的是__A____。
构造函数可以被重载 A.virtual可以用来声明虚函数
B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C.即使基类的构造函数没有参数,派生类也必须建立构造函数
D.静态数据成员可以通过成员初始化列表来初始化
12. 继承具有___B___ ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
A.规律性
B.传递性
C.重复性
D.多样性
13.下列说法中错误的是__B____。
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承时基类中的private成员在派生类中仍是private的
C.私有继承时基类中的public成员在派生类中是private的
D.保护继承时基类中的public成员在派生类中是protected的
14.下列关于友元的描述中,错误的是_D_
A.友元函数可以访问该类的私有数据成员 B.一个类的友元类的成员函数都是这个类的友元函数
C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承
15.派生类的构造函数的成员初始化列表中,不能包含____C___。
A.基类的构造函数
B.派生类中子对象的初始化
C.基类中子对象的初始化
D.派生类中一般数据成员的初始化
16. C++类体系中,不能被派生类继承的有____A___。
A.构造函数
B.虚函数
C.静态成员函数
D.赋值操作函数
17.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化____D___。
A.与虚基类下面的派生类个数有关
B.多次
C.两次
D.一次
18. 以下哪个基类中的成员函数表示纯虚函数__C____
A.virtual void vf(int) B.void vf(int )=0
C.virtual void vf()=0 D.virtual void yf(int{}
19. 在C++中,对虚基类构造函数的调用___C___普通基类的构造函数.
A.总是先于 B.总是后于 C.按自然顺序 D.按对象声明顺序
20. 下列关于动态联编的描述中,错误的是____B___。
A.动态联编是以虚函数为基础的
B.动态联编是在运行时确定所调用的函数代码的
C.动态联编调用函数操作是指向对象的指针或对象引用
D.动态联编是在编译时确定操作函数的
二、填空题(20空,210=20分)
1. 重载函数的函数名是相同的,但__ 参数的类型或个数_是不同的。
2. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员__,共同行为被描述为类中的__成员函数_。
3. 非成员函数应声明为类的 友元函数_________才能访问这个类的private成员。
4. C++提供的__多继承___机制允许一个派生类继承多个基类,即使这些基类是相互无关的。
5. 设置虚基类的目的是_消除二义性___________,设置虚函数的目的是__实现运行多态__________ 。
6. 派生类对基类的继承有三种方式: __公有继承__、__私有继承__ 和__保护继承_。
三.判断题(2×10=20分)
1.构造函数可以重载,而析构函数不可以重载 ( √ )
2.在类中,如果不做特别说明,所指成员均为保护有类型 ( × )
3.基类和派生类中出现同名函数,也存在二义性问题 ( × )
4.使用虚函数保证了在通过一个基类类型的指针(含引用)调用一个虚函数时,C++系统对该调用进行静态联编. ( × )
5.组合类构造函数的需要完成内嵌对象的初始化和本类新增成员的初始化 ( √ )
6. 一个类只能定义一个对象 ( × )
7. ? : 运算符可以重载 ( × )
8. C++支持多继承和多重继承 ( × )
9.派生类的对象对它的基类成员中公有继承的私有成员是可以访问 ( × )
10.纯虚函数是一种特殊的虚函数,它没有具体的定义 ( √ )
四、简答,论述题(每小题5分,共20分)
1.何为拷贝构造函数?它主要在哪几种情况使用?P111
2 什么是组合类,组合类的构造函数需要完成那些操作?P117-118
3.什么是多态?C++是如何体现多态的?
多态性是指同样的消息被不同类型的对象接受产生不同的行为,运行时的多态通过定义虚函数来实现
4.谈谈你对数据共享和保护的认识?
数据 共享就是让在不同地方使用不同计算机、不同软件的用户能够读取他人数据并进行各种操作 运算和分析实现数据共享,可以使更多的人更充分地使用已有数据资源,减少资料收集、数据采集等重 复劳动和相应费用,而把精力重点放在开发新的应用程序及系统集成上
六、论述题(10分)
通过学习C++程序设计,谈谈你对面向对象的理解。
面向对象是当今主流的一种程序设计理念和设计规范,它取代了早期的"结构化"过程设计开发技术,主张一切皆为对象,程序以人的思维模式去解决问题。面向对像的程序是由类组成的,每个类包含对用户公开的特定功能部分和隐藏的实现部分。传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。这一些过程一旦被确定,就要开始考考虑存储数据的方式,这就明确的表述了程序员的工作方式。但面相对像却调换了这个顺序,它不必关心数据对象的具体实现,只要能满足用户的需求即可。面向对象有三个最基本的特性,即:封装,继承,多态。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论