第6章 多态性与虚函的数.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 多态性与虚函的数

第6章 多态性与虚函数;;学习目标: ;*;多态性的实现方法;静态多态性和动态多态性;静态多态性 ;#includeiostream using namespace std; class point{ int x,y; public: point(); point(int x,int y); point(int i); }; point::point() { x=0; y=0; } ; 动态关联:在运行时才决定运行哪个函数。 优点:灵活,层次高,技巧性高; 缺点:效率低;但由于现在计算机速度很快,所以一般不再考虑其运行效率问题。;;基类与派生类的转换;(1) 用派生类对象给基类对象赋值;(2) 可以用派生类对象来初始化基类的引用;(3) 如果函数的参数是基类对象或基类对象的引用,相应的实参可以用派生类对象。 (4) 可以把派生类对象的地址赋值给指向基 类的指针变量。 ;;(1) 声明基类Point类 ;(2) 声明派生类Circle ;int main( ) {Circle c(3.5,6.4,5.2); coutoriginal circle:\nx=c.getX(), y=c.getY(), r=c.getRadius( ) , area=c.area( )endl; c.setRadius(7.5); c.setPoint(5,5); coutnew circle:\\nc; Point pRef=c; coutpRef:pRef; return 0; } ;(3) 声明Circle的派生类Cylinder;int main( ) {Cylinder cy1(3.5,6.4,5.2,10); cout\noriginal cylinder:\nx=cy1.getX( ), y=cy1.getY( ), r= cy1.getRadius( ), h=cy1.getHeight( )\narea=cy1.area() ,volume=cy1.volume()endl; cy1.setHeight(15); cy1.setRadius(7.5); cy1.setPoint(5,5); cout\nnew cylinder:\ncy1; Point pRef=cy1; cout\npRef as a Point:pRef; Circle cRef=cy1; cout\ncRef as a Circle:cRef; return 0; } ;【总结】在程序中不是通过不同的对象名去调用不同派生层次中的同名函数,而是通过指针调用它们。确定调用哪个函数是在编译时确定的。 思考引出多态性: 【思考】如果 main ( ) 函数中的语句可以随着指针 p 所指对象不同而调用不同版本的area ( )函数,就实现了运行时的多态。这种机制的实现依赖于在在基类中把成员函数area ( )说明为虚函数。 ;6.3 虚函数;例6.2 基类与派生类中有同名函数。;class Graduate:public Student {public: Graduate(int, string, float, float); void display( ); private: float pay; }; void Graduate::display( ) {coutnum:num\nname:name\nscore:score\npay=payendl;} Graduate::Graduate(int n, string nam,float s,float p):Student(n,nam,s),pay(p){ };;1. 虚函数的定义 定义虚函数的方法如下: virtual 函数类型 函数名(形参表) {// 函数体} 2.虚函数的作用 虚函数同派生类的结合可使C++支持运行时的多态性, 实现了在基类定义派生类所拥有的通用接口,而在派生 类定义具体的实现方法,即常说的“同一接口,多种

文档评论(0)

ayangjiayu3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档