多态性与虚函数ppt课件.ppt

多态性与虚函数ppt课件.ppt

ID:58940117

大小:183.00 KB

页数:61页

时间:2020-09-28

多态性与虚函数ppt课件.ppt_第1页
多态性与虚函数ppt课件.ppt_第2页
多态性与虚函数ppt课件.ppt_第3页
多态性与虚函数ppt课件.ppt_第4页
多态性与虚函数ppt课件.ppt_第5页
资源描述:

《多态性与虚函数ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章多态性与虚函数虚函数多态性:调用同一个函数名,但可以根据需要实现不同的功能。多态性是面向对象的程序设计的关键技术。编译时的多态性(函数重载)运行时的多态性(虚函数)多态性运行时的多态性是指在程序执行之前,根据函数名和参数无法确定应该调用哪一个函数,必须在程序的执行过程中,根据具体的执行情况来动态地确定可以将一个派生类对象的地址赋给基类的指针变量。基类对象派生类对象Baseb;Derived;Base*basep;basepbasep=&b;basepbasep=&d;basep只能引用从基类继承来的成员。xShow()xShow()yShow()basep->Sh

2、ow();basep->Show()基类指针派生类对象基类对象classPoint{floatx,y;public:Point(){}Point(floati,floatj){x=i;y=j;}floatarea(void){return0.0;}};constfloatPi=3.14159;classCircle:publicPoint{//类Point的派生类floatradius;public:Circle(floatr){radius=r;}floatarea(void){returnPi*radius*radius;}};voidmain(void){Point

3、*pp;//基类指针,可以将派生类对象的地址赋给基类指针Circlec(5.4321);pp=&c;cout<area()<Area();访问到的只是从基类继承来的同名成员。提出设想:能否用同一个调用形式,既能调用派生类又能调

4、用基类的同名函数。在程序中不是通过不同的对象名去调用不同派生层次中的同名函数,而是通过指针调用它们。C++中的虚函数就是用来解决这个问题的。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。例如,在一个图形类继承结构中,设类Cshape是所有具体图形类(如矩形、三角形、圆形等)的基类,则函数调用语句pShape->Draw()可能是绘制一个矩形,也可能是绘制一个三角形或一个圆。具体绘制什么图形,取决于pShape所指的对象。在C++中,是通过虚函数机制来实现这种类的行为的多态性。基类对象派生类对象Baseb;D

5、erived;basepbasepxShow()xShow()yShow()basep->Show()Base*basep;basep=&b;basep=&d;basep->Show();即指向派生类新增的成员函数需要将基类中的Show()说明为虚函数若要访问派生类中相同名字的函数,必须将基类中的同名函数定义为虚函数,这样,将不同的派生类对象的地址赋给基类的指针变量后,就可以动态地根据这种赋值语句调用不同类中的函数。classPoint{floatx,y;public:Point(){}Point(floati,floatj){x=i;y=j;}virtualfloata

6、rea(void){return0.0;}};constfloatPi=3.14159;classCircle:publicPoint{//类Point的派生类floatradius;public:Circle(floatr){radius=r;}floatarea(void){returnPi*radius*radius;}};voidmain(void){Point*pp;//基类指针,可以将派生类对象的地址赋给基类指针Circlec(5.4321);pp=&c;cout<area()<

7、态束定(或关联/联编/绑定),按照实际对象c调用了Circle中的函数area()。使Point类中的area()与Circle类中的area()有一个统一的接口。输出:92.7011声明为虚函数调用虚函数虚函数再定义虚函数的定义和使用可以在程序运行时通过调用相同的函数名而实现不同功能的函数称为虚函数。定义格式为:virtualFuncName();一旦把基类的成员函数定义为虚函数,由基类所派生出来的所有派生类中,该函数均保持虚函数的特性。在派生类中重新定义基类中的虚函数时,可以不用关键字virt

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

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

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