多态性和虚函数复习资料Word文档格式.docx

上传人:b****2 文档编号:4238644 上传时间:2023-05-03 格式:DOCX 页数:15 大小:32.17KB
下载 相关 举报
多态性和虚函数复习资料Word文档格式.docx_第1页
第1页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第2页
第2页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第3页
第3页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第4页
第4页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第5页
第5页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第6页
第6页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第7页
第7页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第8页
第8页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第9页
第9页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第10页
第10页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第11页
第11页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第12页
第12页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第13页
第13页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第14页
第14页 / 共15页
多态性和虚函数复习资料Word文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多态性和虚函数复习资料Word文档格式.docx

《多态性和虚函数复习资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《多态性和虚函数复习资料Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

多态性和虚函数复习资料Word文档格式.docx

A.&

&

B.[]C.:

:

D.new

5.下列关于运算符重载的描述中,正确的是()。

A.运算符重载可以改变操作数的个数

B.运算符重载可以改变操作符的优先级

C.运算符重载可以改变操作符的结合性

D.运算符重载不能改变操作符的语法结构

6.下列运算符中,不能重载的是()。

A.?

B.+C.-D.<

=

7.在C++中,通常将重载运算符的成员函数称为()。

A.运算符函数B.重载函数

C.函数重载运算符D.以上都不对

8.系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。

A.参数个数B.参数类型

C.函数名称D.函数的类型

9.关于动态联编的下列描述中,错误的是()。

A.动态联编是以虚函数为基础的

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

C.动态联编调用函数的标识要求是指向对象的指针或对象的引用

D.动态联编是在编译时确定操作函数的

10.关于虚函数的描述中,正确的是()。

A.虚函数是一个static类型的成员函数

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

C.基类中说明了虚函数,派生类中将其对应的函数可不必说明为虚函数

D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型

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

A.纯虚函数是一种特殊的虚函数,它没有具体实现

B.抽象类是指具有纯虚函数的类

C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

D.抽象类只能作为基类使用,其纯虚函数的实现只能由派生类给出

12.下列描述中,属于抽象类特性的是()。

A.可以说明虚函数B.可以进行构造函数重载

C.可以定义友元函数D.不能说明其对象

13.如果一个类至少有一个纯虚函数,那么就称为该为()

A.抽象类B.虚基类C.派生类D.以上都不对

14.如果一成员函数在其所在的基类中被说明为虚函数,它在该基类中没有定义,但要求在派生类中定义自己的版本,则该成员函数是()

A.虚析构函数B.虚构造函数C.纯虚函数D.静态成员函数

三.判断下列描述的正确性。

1.函数的参数个数和类型都相同,但只是返回值不同,这不是重载函数。

2.重载函数可以带有缺省值参数,但要注意调用时所产生的二义性。

3.多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。

4.对类对象每个重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。

5.对单目运算符重载为友元函数时,说明一个参数;

重载为成员函数时,不能显式说明参数。

6.重载运算符保持原运算符的优先级和结合性不变。

7.虚函数是用virtual关键字说明的成员函数。

8.抽象类是指一些没有说明对象的类。

9.构造函数说明为纯虚函数是没有意义的。

10.动态联编是在运行时选定所调用的成员函数的。

四.分析下列程序的运行结果

1.程序清单如下:

#include<

iostream.h>

classB

{

public:

B(inti){b=i+50;

show();

}

B(){}

virtualvoidshow(){cout<

<

"

B:

show()called."

b<

endl;

protected:

intb;

};

classD:

publicB

D(inti):

B(i){d=i+100;

D(){}

voidshow(){cout<

D:

d<

intd;

voidmain()

Dd1(108);

}

2.程序清单如下:

B(inti){b=i;

virtualvoidvirfun(){cout<

virfun()called.\n"

;

private:

D(inti,intj):

B(i){d=j;

voidvirfun(){cout<

show()called.\n"

voidfun(B*obj)

obj->

virfun();

D*pd=newD;

fun(pd);

3.程序清单如下:

classA

A(){ver='

A'

voidprint(){cout<

TheAversion:

ver<

charver;

classD1:

publicA

D1(intnumber){info=number;

ver='

1'

TheD1info:

info<

version:

intinfo;

classD2:

D2(intnumber){info=number;

TheD2info:

classD3:

publicD1

D3(intnumber):

D1(number){info=number;

3'

TheD3info:

voidprint_info(A*p)

p->

print();

Aa1;

D1d1(4);

D2d2(100);

D3d3(-25);

print_info(&

a1);

d1);

d2);

d3);

4.程序清单如下:

virtualvoidprint(){cout<

5.程序清单如下:

classMatrix

Matrix(intr,intc)

{

row=r;

col=c;

elem=newdouble[row*col];

double&

operator()(intx,inty)

returnelem[col*(x-1)+y-1];

operator()(intx,inty)const

~Matrix(){delete[]elem;

double*elem;

introw,col;

Matrixm(5,8);

for(inti=0;

i<

5;

i++)

m(i,1)=i+5;

for(i=0;

cout<

m(i,1)<

"

cout<

6.程序清单如下:

classPoint

intx,y;

Point(intvx=0,intvy=0){x=vx;

y=vy;

Pointoperator+(Pointp1)

returnPoint(x+p1.x,y+p1.y);

Pointoperator-(Pointp1)

returnPoint(x-p1.x,y-p1.y);

x<

y<

Pointp1(10,10),p2(20,20);

p1=p1+p2;

p1.print();

7.程序清单如下:

intdys[]={31,28,31,30,31,30,31,31,30,31,30,31};

classdate

intmo,da,yr;

date(intm=0,intd=0,inty=0){mo=m;

da=d;

yr=y;

voiddisp(){cout<

mo<

'

/'

da<

yr<

dateoperator+(intday)

datedt=*this;

day+=dt.da;

while(day>

dys[dt.mo-1])

{

day-=dys[dt.mo-1];

if(++dt.mo==13)

{

dt.mo=1;

dt.yr++;

}

}

dt.da=day;

returndt;

dated1(2,10,2001),d2;

d2=d1+20;

d2.disp();

8.程序清单如下:

Point(){}

Point(intk,intm){x=k;

y=m;

面积为:

x*y<

Pointoperator,(Pointr){returnPoint(r.x,r.y);

Pointoperator+(Pointr){returnPoint(x+r.x,y+r.y);

Pointr1(3,3),r2(5,8),r3(2,4);

r1.disp();

r2.disp();

r3.disp();

r1=(r1,r2+r3,r3);

五.填空题

1.多态性是面向对象程序设计的重要特征之一,只有对多态性的支持,才能够称为面向对象的语言。

在C++中,多态性的实现技术主要有:

、和。

2.在类中,构造函数可以重载,通常的成员函数也可以重载,但不允许重载。

3.当双目运算符重载为类的成员函数时,由于成员函数含有,因此运算符函数只能有一个参数,而当其被重载为类的友元函数时,必须有个参数。

4.设obj1,obj2是某类对象,当运算符@被重载为该类的成员函数时,则obj1@obj2被解释为。

5.虚函数是动态联编的基础,要求虚函数必须是。

对虚函数的调用,采取动态联编,其调用虚函数的标识必须用、或,否则其它标识方法对虚函数的调用,仍然采取的是静态联编。

6.抽象类只能作为来使用,其纯虚函数的实现由派生类给出。

如果派生类中没有重新定义纯的虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然是。

六.编程题

1.基于抽象类的技术,编写计算正方体、球体和圆柱体的表面积和体积的程序。

2.设计评选优秀教师和学生的程序,其类结构如图所示。

当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。

3.定义一个矩阵类,重载运算符+与*,以完成两矩阵的相加与相乘运算。

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2