c++_chap10(北大).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文档。上传文档
查看更多
c_chap10(北大)

入门篇 本章小结 C++中的多态:函数重载、运算符重载、虚函数等。重载是指同一个函数、过程可以操作于不同类型的对象;运算符重载是对已有的运算符赋予多重含义,实质上是函数重载。虚函数是实现类族中定义于不同类中的同名成员函数的多态行为。 多态从实现的角度来讲可以分为两类:编译时的多态和运行时的多态,前者是在编译过程中确定了同名操作的具体操作对象(静态联编), 如函数重载或运算符重载;而后者则是在程序运行过程中才动态地确定所针对的具体对象(动态联编),虚函数是实现动态联编的基础。 纯虚函数是在基类中说明的虚函数,带有纯虚函数的类是抽象类,抽象类的主要作用是通过它为一个类族建立一个公共的接口,使它们能够更有效地发挥多态特性。 一个小型公司的人员信息管理,读者应该从中领悟面向对象程序设计的基本方法。 作业 阅读教材例10.1---10.8程序,理解其知识要点 思考题:P320 一、二、三 作业:P320 五(1,2,3) 实验:验证P320 四 (实验指导) 【例10.6】 改写例10.2的程序实现运行时的多态性。 使用虚函数 // 将派生类的对象赋给基类对象后, p.area() 仍然调用基类中定义的虚函数 cout派生类对象赋值給基类对象(静态多态):endl; p=c1; coutp.area()endl; //? // 基类的引用引用派生类的对象, 也可以获得运行时的多态性 cout 通过基类的引用实现动态多态:\n; Circle c2( 2, 2, 20 ); Point pRef=c2; coutpRef.area()endl; //? } 虚函数 虚析构函数 虚析构函数的声明语法为: virtual ~类名(); 如果一个类的析构函数是虚函数,那么,由它派生而来的所有子类的析构函数也是虚函数。使用虚析构函数之后,在使用指针引用时可实现动态联编,实现运行时的多态,保证使用基类类型的指针就能够调用适当的析构函数针对不同对象进行清理工作。 虚函数 如果将带有虚函数的类中的一个或者多个虚函数声明为纯虚函数,则这个类就称为抽象类。抽象基类不能用来建立实例化的对象。抽象类的唯一用途是为其他类提供合适的基类,其他类可以从它这里继承接口和(或)继承实现。 只给出了函数声明没给出实现的虚成员函数称为纯虚函数。声明纯虚函数的一般格 式为: virtual 返回类型 函数名(参数表)=0; 如在本章的例10.6中,基类的成员函数area可声明如下: virtual double area()=0; 10.4 纯虚函数与抽象类 纯虚函数 多态性 如果将带有虚函数的类中的一个或者多个虚函数声明为纯虚函数,则这个类就称为抽象类。抽象基类不能用来建立实例化的对象。 只给出了函数声明没给出实现的虚成员函数称为纯虚函数。声明纯虚函数的一般格 式为: virtual 返回类型 函数名(参数表)=0; 如在本章的例10.6中,基类的成员函数area可声明如下: virtual double area()=0; 纯虚函数 【例10.7】 将例10.6改造如下: 10.4 纯虚函数与抽象类 多态性 //将基类的虚函数定义为纯虚函数virtual double area()=0; //主函数修改如下 void main() { Circle c1(1,1,10); //声明两个Circle 类对象 Arc a1(1,1,10,10,20); //声明Arc 类对象 Point *pptr[3]; //声明基类指针数组 pptr[1]=c1; //基类指针指向Clircle类的对象 pptr[2]=a1; //基类指针指向Arc类的对象 // 基类的指针指向派生类的对象, 可以获得运行时的多态性 cout 通过基类的指针实现动态多态:\n; for ( int i = 1; i 3; i++ ) coutpptr[i]-area()endl; } 纯虚函数与抽象类 带有纯虚函数的类是抽象类。抽象类的主要作用是通过它为一个类族建立一个公共的接口,使得它们能够更有效地发挥多态特性。 抽象类 注意:不能声明抽象类的对象,但是可以声明抽象类的指针和引用。通过指针或引用,就可以指向并访问派生类对象,进而访问派生类的成员。 如在例10.7中,不能有如下定义: Point p; 编译时提示如下错误:Point : cannot instantiate abstract class due to following members: 纯虚函数与抽象类 10.5 实例分析 【例10.8】 小型公司人员的

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档