C++_Chapter12

C++_Chapter12

ID:41299250

大小:180.50 KB

页数:15页

时间:2019-08-21

C++_Chapter12_第1页
C++_Chapter12_第2页
C++_Chapter12_第3页
C++_Chapter12_第4页
C++_Chapter12_第5页
资源描述:

《C++_Chapter12》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第12章多态性与虚函数多态性(polymorphism)是面向对象程序设计的一个重要特征。在C++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。1从系统实现的角度看,多态性分为两类:静态多态性和动态多态性。以前学过的函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时系统就能决定

2、调用的是哪个函数,因此静态多态性又称编译时的多态性。静态多态性是通过函数的重载实现的(运算符重载实质上也是函数重载)。动态多态性是在程序运行过程中才动态地确定操作所针对的对象。它又称运行时的多态性。动态多态性是通过虚函数(virtualfunction)实现的。212.1基类指针派生类的一个重要特征是:派生类的指针和基类的指针兼容。多态性就是巧妙地利用了这一简单但强大的多面特征。下面我们重写上章的四边形和三角形的实例,但这里用指针兼容这一特征。3//pointerstobaseclass#include<

3、iostream>usingnamespacestd;classCPolygon{protected:intwidth,height;public:voidset_values(inta,intb){width=a;height=b;}};classCRectangle:publicCPolygon{public:intarea(){return(width*height);}};classCTriangle:publicCPolygon{public:intarea(){return(width*hei

4、ght/2);}};intmain(){CRectanglerect;//定义CRectangle类对象rectCTriangletrgl;//定义CTriangle类对象trglCPolygon*ppoly1=▭//定义指针ppoly1,可以指向CPolygon类对象,指向子类对象rectCPolygon*ppoly2=&trgl;//定义指针ppoly2,可以指向CPolygon类对象,指向子类对象trglppoly1->set_values(4,5);ppoly2->set_values(

5、4,5);cout<

6、,area()应该不仅是其派生类的成员,也应是已声明为类CPolygon的成员,但问题是,CRectangle和CTriangle执行不同版本的area()函数,因此不能在基类中直接定义,但可以定义为一种虚拟成员。512.2虚拟成员虚拟成员。某类的成员可以在它的派生类中重新定义称为虚拟成员。为了声明一类的成员为虚拟的成员,只需在前面加上关键字virtual即可。对以上的程序重写,在CPolygon类中添加一个虚拟成员area()。这样,三个类都用了相同的成员:width,height,set_values

7、()andarea()。6//virtualmembers#includeusingnamespacestd;classCPolygon{protected:intwidth,height;public:voidset_values(inta,intb){width=a;height=b;}virtualintarea()//声明虚拟函数area(){return(0);}};classCRectangle:publicCPolygon{public:intarea(){return(

8、width*height);}};classCTriangle:publicCPolygon{public:intarea(){return(width*height/2);}};intmain(){CPolygonpoly;//定义CPolygon类对象polyCRectanglerect;//定义CRectangle类对象rectCTriangletrgl;//定义CTriangle类对象trglCPolygon*ppol

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

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

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