面向对象程序设计之多态性与虚函数.ppt

面向对象程序设计之多态性与虚函数.ppt

ID:51039541

大小:875.50 KB

页数:66页

时间:2020-03-17

面向对象程序设计之多态性与虚函数.ppt_第1页
面向对象程序设计之多态性与虚函数.ppt_第2页
面向对象程序设计之多态性与虚函数.ppt_第3页
面向对象程序设计之多态性与虚函数.ppt_第4页
面向对象程序设计之多态性与虚函数.ppt_第5页
资源描述:

《面向对象程序设计之多态性与虚函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Object-OrientedProgramminginC++第六章多态性与虚函数6.1多态性的概念多态性(polymorphism)是面向对象程序设计的重要特征。一个算法语言如果只支持类,而不支持多态,只能说是基于对象的语言,如Ada,VB。C++支持多态性,在C++程序设计中能够实现多态性。利用多态性,可以设计和扩展一个易于扩展的系统。什么叫多态?多态的意思是一种事物的多种形态。在C++中,是指具有不同功能的函数可以用同一个函数名。面向对象方法中一般是这样描述多态性的:向不同的对象发送同一个消息,不同的对象在

2、接收时会产生不同的行为(即方法)。写出程序运行结果#include#includeUsingnamespacestd;classstudent{public:student(intn,stringnam,floats){num=n;name=nam;score=s;}voiddisplay(){cout<<“num:”<

3、re;};classgraduate:publicstudent{public:graduate(intn,stringnam,floats,floatp):student(n,nam,s),pay(p){}voiddisplay(){cout<<“num:”<

4、,”Liu”,90.5,800.5);student*pt=&s1;pt->display();pt=&g1;pt->display();}6.1多态性的概念我们其实已经接触过多态性的现象。如函数的重载多态性分类:从系统实现的角度看,多态性分为以下两类:静态多态性:又称编译时的多态性。如函数重载属于静态多态性。动态多态性:有称为运行时的多态性。它主要表现为虚函数(virtualfunction)。6.3虚函数能否用一个调用形式,既能调用派生类的函数,又能调用基类同名函数?C++中的虚函数就是用来解决这一问题。虚函

5、数的作用:虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。6.3虚函数#include#includeclassstudent{public:student(intn,stringnam,floats){num=n;name=nam;score=s;}voiddisplay(){cout<<“num:”<

6、d:intnum;stringname;floatscore;};classgraduate:publicstudent{public:graduate(intn,stringnam,floats,floatp):student(n,nam,s),pay(p){}voiddisplay(){cout<<“num:”<

7、1,”Li”,98.5);graduateg1(2001,”Liu”,90.5,800.5);student*pt=&s1;pt->display();//指向基类对象s1pt=&g1;pt->display();//指向派生类对象g1,仅输出了派生类的基类数据成员,因为它调用的是基类成员函数display!}假如想输出派生类的全部数据,当然可以采用下面两种方法之一:通过派生类对象名g1,调用派生类对象的成员函数:g1.display();定义一个指向派生类的指针ptr,并指向g1,然后用ptr->display

8、()。6.3虚函数我们可以用虚函数可以顺利解决这一问题。方法是:在基类student中声明display函数时,在最左边加上一个关键字virtual:virtualvoiddisplay();就可以student类的display函数声明为虚函数,程序其它部分不变编译运行后,可见,使用pt->display(),的确将graduate类对象g1的全部数据显示了出来,说明它

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。