面向对象程序设计第五章作业题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章作业题
一.填空题
1.面向对象程序设计有4个主要特点: ____、____ 、____和____。
2.用来派生新类的类称为_______,而派生出的新类称为它的子类或派生类。
3.“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,
请将Triangle类中的CalArea函数补充完整。
class Shape{
public:
virtual int CalArea()=0;
}
class Triangle: public Shape{
public:
Triangle{int s, int h}: side(s),height(h) {}
________________ { return side*height/2 ; }
private:
int side;
int height;
};
4.继承方式包括:____、____、____;如果省略,系统默认为____。
5.派生类中的成员包括从____和____两大部分。
二.单项选择题
1.下列关于继承方式的描述中,错误的是()。
A.如果不显式地指定继承方式,缺省的继承方式是私有(private)
B.采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C.采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D.采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
2. 下列代码声明了3个类
class Person{};
class Student:public Person{};
class Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是()。
A.类Person是类Undergraduate的基类
B.类Undergraduate从类Student公有继承
C.类Student是类Person的派生类
D.类Undergraduate是类Person的派生类
3. 以下关于C++类的说法中,正确的是()。
A.C++语言的默认访问权限是private
B.C++语言中的类定义,用户一定要自己定义一个构造函数用于实例化类
C.C++语言中的成员函数的实现部分一定要写在类定义外
D.C++语言中的类不能够嵌套定义
4. 下面选项中不属于面向对象程序设计特征的是()。
A.继承性B.多态性C.类比性D.封装性
5. 派生类对象对其基类中的什么成员是可访问的()。
A.公有继承的私有成员
B.私有继承的公有成员
C.公有继承的保护成员
D.公有继承的公有成员
6.如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是()。
A. public和public
B.public和protected
C.protected 和public
D. protected 和protected
7.派生类的成员函数不能访问基类的()。
A.共有成员和保护成员
B. 共有成员
C. 私有成员
D. 保护成员
8. 下列关于派生类构造函数和析构函数的说法中,错误的是()。
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
9.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为()。
A.私有继承B.非私有继承C.保护继承D.公有继承
10.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。
A.派生类、成员对象类、基类B.成员对象类、基类、派生类
C.基类、成员对象类、派生类D.基类、派生类、成员对象类
11.下列关于虚基类的描述中,错误的是()。
A.使用虚基类可以消除由多继承产生的二义性
B.构造派生类对象时,虚基类的构造函数只被调用一次
C.声明“class B : virtual public A”说明类B为虚基类
D.建立派生类对象时,首先调用虚基类的构造函数
12.一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是()。
A.每个派生类的构造函数都要为虚基类构造函数提供实参
B.多继承时有可能出现对基类成员访问的二义性问题
C.使用虚基类可以解决二义性问题并实现运行时的多态性
D.建立最派生类对象时,虚基类的构造函数会首先被调用
13.在公有派生的情况下,派生类中定义的成员函数只能访问原基类的()。
A.公有成员和私有成员B.私有成员和保护成员
C.公有成员和保护成员D.私有成员、保护成员和公有成
14.下列关于继承方式的描述中,错误的是()。
A.如果不显式地指定继承方式,缺省的继承方式是私有(private)
B.采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C.采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D.采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
15.下列关于派生类构造函数和析构函数的说法中,错误的是()。
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
16.下列有关继承和派生的叙述中,正确的是()。
A.派生类不能访问基类的保护成员B.作为虚基类的类不能被实例化
C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现
17.派生类的成员函数不能访问基类的()。
A.公有成员和保护成员B.共有成员C.私有成员D.保护成员
18.在一个派生类的成员函数中,试图调用其基类的成员函数“void f(); ”,但无法通过编译,这说明()。
A.f()是基类的私有成员C.派生类的继承方式为私有