11多态性与虚函数docWord文档格式.docx

上传人:b****6 文档编号:20709675 上传时间:2023-01-25 格式:DOCX 页数:14 大小:18.11KB
下载 相关 举报
11多态性与虚函数docWord文档格式.docx_第1页
第1页 / 共14页
11多态性与虚函数docWord文档格式.docx_第2页
第2页 / 共14页
11多态性与虚函数docWord文档格式.docx_第3页
第3页 / 共14页
11多态性与虚函数docWord文档格式.docx_第4页
第4页 / 共14页
11多态性与虚函数docWord文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

11多态性与虚函数docWord文档格式.docx

《11多态性与虚函数docWord文档格式.docx》由会员分享,可在线阅读,更多相关《11多态性与虚函数docWord文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

11多态性与虚函数docWord文档格式.docx

A.抽彖类

B.虚函数

C.派生类

D.其他都不对

C++类体系中,不能被派生类继承的冇()。

A.构造函数

C.静态成员函数

D.赋值操作函数

下列虚基类的声明中,正确的是()。

A.classvirtualB:

publicA

B.virtualclassB:

C.classB:

publicAvirtual

D.classB:

virtualpublicA

下列函数中,可以被定义为虚函数的是()。

A•类的静态成员函数

B.类的构造函数

C.非类的函数

D.类的非静态成员函数

关于虚函数的描述屮,()是正确的。

A.虚函数是一个静态成员函数

B.虚函数是一个非成员函数

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

D.派牛•类的虚函数与基类中対应的虚函数具有相同的参数个数和类型

下而关于虚函数和函数重载的叙述不正确的是()。

A.虚函数不是类的成员函数

B.虚函数实现了C++的多态性

C.函数重载允许非成员函数重载,而虚函数则不行

D.函数重载的调用根据参数的个数、序列来确定,而虚函数依据对彖确定

publicAvirtual

下面正确的说法是o

A.关键字virtual只能用來声明虚函数

B.声明虚函数时,才使用关键字virtual

C.关键字virtual不能川來声明虚棊类

D.关键字virtual能用来声明虚基类

实现运行时的多态性耍使用()。

A.虚函数

B•重载函数

C.析构函数

D.构造函数

()是一个在基类中说叨的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版木。

A.纯虚函数

B.虚析构函数

C.虚构造函数

D.静态成员函数

下列描述中,属于抽象类的性质是。

A.可以说明虚函数

D•不能说明其对象

卜•列关于抽象类的说明屮不正确的是()o

A.含有纯虚函数的类称为抽象类

B.抽象类不能被实例化,但可声明抽象类的指针变量

C.抽象类的派生类可以实例化

D.纯虚函数可以被继承

C

下列特征小不是而向对象方法的主要特征的是()o

B.继承

C.封装性

D.模块化

填空题

有如下类定义

classA

{

public:

virtualintvf(int)二0;

};

则类A为类。

第1空:

抽象

编译时多态性通过和模板來实现

重载

有如下类定义:

virtualintvf(int)=O;

则成员函数vf为函数。

纯虚

如果在类屮定义了一个成员函数为则表明在该继承层次链条的派牛类中有可能重新

定义这个成员函数的实现。

虚函数

虚函数的作用就是通过基类去调用它所指的派牛类对象中的成员函数。

指针

抽象类的主要作用是为一个族类提供统一的O

公共接口

声明虚函数时,被“初始化”为0的函数被称作函数。

有如F类定义:

virtualintvf(int){};

则成员函数Vf为函数。

虚函数从表现形式看是指那些被关键字修饰的成员函数。

第1空:

virtual

多态性分为编译时多态性和多态性。

运行时

抽象类中至少要有一个函数。

函数重载可以实现时多态性。

编译

含冇纯虚函数的类称为O

抽象类

拥有纯虚函数的类是抽彖类,纯虚函数的声明以“结束。

=0

classB

virtualvoidfl();

virtualvoidf2();

classD:

publicB

voidfl();

voidf2(intx);

则派生类D的成员函数fl()和f2()屮,虚函数为o

fl

编译时多态性也称为多态性。

静态

在C++屮,只能将类的函数声明为虚函数,不能将类外的普通函数声明为虚函数。

成员

在C++屮,空虚函数的函数体是的,纯虚函数无函数体。

多态性乂称为动态多态性。

拥有纯虚函数的类是抽象类,抽象类不能用來定义O

对象

类无法创建对象实例。

派生类的虚函数与基类屮对应的熄函数具有的参数个数和类型。

笫1空:

相同

要实现派生类对象的动态绑定,需要将基类中的某个成员函数定义为<

在以卞语句的横线处填入适当的内容,以便在类中定义成员函数vf为虚函数。

intvf(int){};

判断

多态性只能在编译的时候实现。

错课

抽象类也可以建立对象。

错误

虚函数只能川于类的继承层次结构屮。

正确

任何函数都能被芮明为虚函数。

多态性只能通过重载来实现。

抽象类的主要作用是为一个族类提供统一的公共接口。

抽彖类包含纯虚函数。

正确纯虚隊I数也町以有两数休。

错误请写出下题的运行结果:

#inelude<

iostream>

usingnamespacestd;

classPoint

{public:

Point(){}

virtual~Point(){coutvv"

executingPointdestructor"

«

endl;

}

};

classCircle:

publicPoint

Circle(){}

^Circle(){cout«

HexecutingCircledestructorH«

private:

intradus;

intmain()

{Point*p=newCircle;

deletep;

return0;

executingCircledestructor

executingPointdestructor

请写出下题的运行结果:

#include<

string>

classStudent

Student(int,string,float);

virtualvoiddisplay));

protected:

intnum;

stringname;

floatscore;

Student:

:

Student(intn,stringnam,floats)

{num二n;

name二nam;

score=s;

voidStudent:

display()

{cout«

tlnum:

l<

vnum«

Hname:

H<

<

name«

Mscore:

score«

HclassGraduate:

publicStudent

Graduate(int,string,float,float);

voiddisplay();

floatpay;

voidGraduate:

Hnum:

vnurrivv"

name:

vname«

Hpay=H«

pay«

Graduate:

Graduate(intn,stringnam,floats,floatp):

Student(n,nam/s),pay(p){}

{Studentstudl(1001,”Li”,87.5);

Graduategradl(2001;

'

Wang,,/98.5z1200);

Student*pt=&

studl;

pt=&

gradl;

pt->

display();

num:

2001

name:

Wang

score:

98.5

pay=1200

voidprint(){cout«

"

B"

;

classD:

publicB

D"

voidmain()

D*pd=newD();

B*pb=pd;

pb->

print();

pd->

deletepd;

BD

#includeviostream>

classT1

voidfunl(){cout«

"

Tl}

virtualvoidfun2(){cout«

classT2:

publicT1

HT2n;

voidfun2(){cout«

nT2“;

voidf(Tl&

b)

b.funl();

b.fun2();

T2obj;

f(obj);

T1T2

#include<

classTestClass

virtualvoidfunl(){cout«

,funlTestClass,,«

}virtualvoidfun2(){cout«

,fun2TestClass,,«

}};

classTestClassl:

publicTestclass

voidfunl(){cout«

funlTestClasslH«

voidfun2(intx){cout«

,fun2TestClassl,,«

Testclassobjl,*p;

TestClasslobj2;

p=&

obj2;

p->

funl();

fun2();

}funlTestClassl

fun2TestClass

请写出下题的运行结果:

#include<

usingnamespacestd;

classApublic:

virtualvoidf(){cout«

l;

voidg(){cout«

2;

classB:

publicA

3;

voidg(){cout«

4;

voidshow(A&

a)

a.f();

a.g();

Bb;

show(b);

32

classPublication〃出版物类

Publicationfchar*name="

未知名称”){strcpy(this->

name,name);

}

charname[30];

constchar*getName()const{returnname;

virtualconstchar*getType()const{return11未矢口类型'

*;

}private:

classBook:

publicPublication//卩类

Book(char*name):

Publication(name){}

virtualconstchar*getType()const{returnHIJ'

1;

voidshowPublication(Publication&

p)

{cout«

p.getType()«

,:

p.getName()«

Bookbook(”精彩人生”);

showPublication(book);

书:

精彩人生

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1