面向对象程序设计语言虚函数和多态性详解演示文稿.pptVIP

面向对象程序设计语言虚函数和多态性详解演示文稿.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计语言虚函数和多态性详解演示文稿 1页,共29页,星期五。 优选面向对象程序设计语言虚函数和多态性 2页,共29页,星期五。 第七章 虚函数和多态性 C++语言的多态性有两种类型:静态多态性和动态多态性。前面学习的函数重载和运算符重载就是静态多态性的具体示例。在程序编译时系统就能够决定调用哪个函数,因此静态多态性又称为编译时的多态性。动态多态性时程序运行过程中才动态的确定操作所针对的对象。它又称为运行时的多态性。动态多态性是通过虚函数实现的。 * 3页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.1静态多态性 对于普通成员函数的重载,可表达为下面的方式: (1)在同一个类中重载; (2)在不同类中重载; (3)基类的成员函数在派生类中重载; 因此,重载函数的访问是在编译时区分的,这种程序运行之前就能够在多个函数中确定当前访问的函数的方法称为静态多态性。 * 4页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.1静态多态性 有以下三种区分方法: 据参数的特征加以区分,例如: Show(int, char) 与 Show(char * , float) 使用”::”加以区分,例如: Circle :: Show 有别于 Point :: Show 根据类对象加以区分 ACircle.Show() 调用 Circle :: Show() * 5页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.1静态多态性 子类可以重载父类的成员: class A { public: void fun() {coutIn Aendl;} }; class B : public A { public: void fun() {coutIn Bendl;} }; * 6页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.1静态多态性 C Cobj; Cobj.fun(); //调用C::fun() Cobj.B::fun(); //调用B::fun() Cobj.A::fun(); //调用A::fun() A Aref=Cobj; Aref.fun(); //调用A::fun() ,编译器通过类型确定调用哪个版本 B Bref=Cobj; Bref.fun(); //调用B::fun() Bref.B::fun(); //调用B::fun() A * Apointer=Cobj; Apointer-fun(); //调用A::fun() * 7页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.2基类和派生类的指针与对象的关系 (1)可以用一个指向基类的指针指向其公有派生类的对象。这时,基类指针访问的是派生对象的拥有的基类部分,派生类自身的部分不能被基类指针访问。但是用指向派生类的指针指向一个基类的对象是不正确的,因为派生类指针可以访问派生类公有成员,但基类对象没有派生类自身成员,因此用派生类指针指向基类对象时,如果访问派生类公有成员,而该成员实际不存在,所以不能用指向派生类的指针指向一个基类的对象。 (2)希望用基类指针访问其公有派生类的特定成员,必须将基类指针用显示类型转换为派生类指针。 * 8页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.3 虚函数与多态性 1.虚函数的概念 ? 一个指向基类的指针可用来指向从基类公有派生的任何对象,这一事实是非常重要的,是 C++ 实现运行时多态性的关键途径。如果有多个或者多层派生类,通过一个基类指针可以访问所有派生类对象的成员函数,这样就可以实现一个接口,多个实现的访问了。但是观察例7-3,基类指针能否访问不同派生类对象的成员函数呢? * 9页,共29页,星期五。 第七章 虚函数和多态性 7.1 虚函数 7.1.3 虚函数与多态性 class Base { public: Base(int a) {x=a;} void who() { cout base x\n;} protected: int x; }; * class First_d: public Base { public: First_d (int a ):Base(a) { }   void who() { cout First derivation x\n;} }; class Second_d :public Base { public:   Second_d (int a):Base(a) { }   void who() {

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档