面向对象程序设计第五章作业题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.派生类的继承方式为私有

相关文档
最新文档