面向对象程序设计复习试题(答案) 联系客服

发布时间 : 星期六 文章面向对象程序设计复习试题(答案)更新完毕开始阅读da791ec2974bcf84b9d528ea81c758f5f71f295e

word完美格式

B's cons.b C's cons.d A's cons.e D's cons. D's des. A's des. C's des. B's des. A's des.

类的多态性

4.1选择题

.实现运行时的多态性采用( D )

A)重载函数 B)构造函数 C)析构函数 D)虚函数

.在派生类中重新定义虚函数时,必须在下列哪方面与基类保持一致。(A )

A)参数类型 B)参数名字 C)操作内容 D)赋值

.当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数(A )

A)都是虚函数 B)只有被重新说明时才是虚函数

C)都不是虚函数 D)只有被重新说明为virtual时才是虚函数 .通过下述哪一项调用虚函数时,采用动态联编。(A )

A)对象指针 B)对象名 C)成员名限定 D)派生类名

下面描述中,正确的是(B D )(两个答案)

A) 虚函数是没有实现的函数 B) 纯虚函数的实现在派生类中

C) 抽象类是没有纯虚函数的类 D) 抽象类指针可以指向不同的派生类对象 若一个类中含有纯虚函数,则该类称为(D )

A) 基类 B) 纯基类 C) 派生类 D) 抽象类 假设A为抽象类,下列声明(B )是正确的

A) A fun(int); B) A *p; C) int fun(A); D) A Obj; 在C++中,要实现动态联编,必须使用(D )调用虚函数

A) 类名 B) 派生类指针 C) 对象名 D) 基类指针 下列函数中,可以作为虚函数的是(C D)(两个答案)

A) 普通函数 B) 构造函数 C)成员函数 D) 析构函数

在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函

精心整理 学习帮手

word完美格式

数的返回值(B )

A) 不同 B) 相同 C) 相容 D) 部分相同 下面函数原型声明中,(C )声明了fun为普通虚函数

A) void fun()=0; B) virtual void fun()=0; C) virtual void fun(); D) virtual void fun(){}; 在下面四个选项中, (A)是用来声明虚函数的。 A)virtual B)public C)using D)false

在下面程序中,A、B、C、D四句编译时出现错误的是(C)。 Class A______ //A {

public:______ //B A(){func();}___ //C

virtual void func()=0;___//D };

实现运行时的多态性要使用(D)。 A)重载函数 B)构造函数 C)析构函数 D)虚函数

对虚函数的调用(D )。 A)一定使用动态联编 B)必须使用动态联编 C)一定使用静态联编 D)不一定使用动态联编

在派生类中重新定义虚函数时,除了(D )方面,其他方面都必须与基类中相应的虚函数保持一致。

A)参数个数 B)参数类型 C)函数名称 D)函数体

关于虚函数的描述中,正确的是(D)。 A)虚函数是一个静态成员函数 B)虚函数是一个非成员函数

C)虚函数既可以在函数说明时定义,也可以在函数实现时定义

D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 下列描述中, (D)是抽象类的特性。 A)可以说明虚函数

B)可以进行构造函数重载 C)可以定义友元函数 D)不能说明其对象

关于纯虚函数和抽象类的描述中,错误的是(C )。

精心整理 学习帮手

word完美格式

A) 纯虚函数是一种特殊的虚函数,它没有具体的实现 B) 抽象类是指具有纯虚函数的类

C) 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D) 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 以下(C )成员函数表示纯虚函数。 A)virtual int vf(int); B)void vf(int)=0;

C)virtual void vf()=0; D)virtual void vf(int){}

下列关于动态联编的描述中,错误的是(D)。 A)动态联编是以虚函数为基础的

B)动态联编是在运行时确定所调用的函数代码的

C)动态联编调用函数操作是指向对象的指针或对象引用 D)动态联编是在编译时确定操作函数的

如果一个类至少有一个纯虚函数,那么就称该类为(A)。 A)抽象类 B)虚基类 C)派生类 D)以上都不对

下面的描述中,正确的是(A)。 A)virtual可以用来声明虚函数

B)含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类 C)即使基类的构造函数没有参数,派生类也必须显示调用其构造函数 D)静态数据成员可以通过成员初始化列表来初始化

4.2填空题

1、 在析构函数中调用虚函数时,采用__静态__联编。

2、 动态联编是在__虚函数___的支持下实现的,它通过__指针或引用__来调用该函数操作。 3、 动态联编中直到__程序运行__时才能确定调用哪个函数:而静态联编则是在__程序编译__时进行的。

4、 C++中__不支持__虚构造函数,但___支持___虚析构函数。

5、 静态联编所支持的多态性称为__编译时__多态性,动态联编所支持的多态性则称为___运行时___多态性,动态多态性由___虚函数___来支持。

6、 在类定义中,将___=0__置于虚函数的函数原型的末尾可以将该函数声明为纯虚函数。 7、 下列程序的运行结果如下: Base's cons. Derived's cons. Derived's des. Base's des.

根据结果将程序补充完整。 #incude class Base {

精心整理 学习帮手

word完美格式

public:

Base(){cout<<\

__virtual ~Base()__{cout<<\};

class Derived:public Base {

public:

Derived(){cout<<\~Derived(){cout<<\};

void main() {

Base *Ptr=__new _ Derived()_ delete ptr; }

8、 抽象类不能__定义对象,但可以_声明指针或引用__作为参数类型,函数返回类型或显式转换类型。

9、 根据不同的输出结果,在函数Tone中填入正确的语句。 #include class Instrument {

public:

virtual void Print() const{cout<<\};

class Piano:public Instument {

public:

void Print() const{cout<<\};

class Guitar :public InstruIment {

pub1ic:

void Print() const{cout<<\};

void Tone(__Instrument obj__)//第二个要求改成Instrument &obj {

__obj.print();__ }

void main() {

Guitar g; Tone(g); Piano p; Tone(p);

精心整理 学习帮手