程序设计与算法语言下.pptVIP

  1. 1、本文档共99页,可阅读全部内容。
  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文档。上传文档
查看更多
9. 4.2 纯虚函数 9.4.2 纯虚函数 C++编译器约定: 建立一个对象时,如果这个对象含有从虚基类继承来的成员,则虚基类的成员由最终派生类的构造函数通过调用虚基类的构造函数进行初始化的。 该派生类的其他基类对虚基类构造函数的调用都自动被忽略。 B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 b0; B1 b1; D1 d1; B0 *p; p=b0; fun(p); p=b1; fun(p); p=d1; fun(p); } P-display(); P-display(); P-display(); B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 *p; p=b0; fun(p); } B0 * p b0 B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 *p; p=b1; fun(p); } B0 * p b1 B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 *p; p=d1; fun(p); } B0 * p d1 9.4 多态性与虚函数 多态性 编译时 运行时 函数重载 运算符重载 虚函数 函数重载:根据函数调用时所给的实参类型和数量,在程 序运行前就知道应该调用哪一个函数。 运算符重载:根据运算对象的不同,在编译时就可确定执 行什么样的运算。 运行时的多态性:指在程序执行前,无法根据函数名和参 数来确定该调用哪一个函数,必须在程 序执行过程中,根据执行的具体情况来 动态地确定。 9.4 多态性与虚函数 9.4.1 虚函数的定义 9.4.2 纯虚函数 9.4.1 虚函数的定义 为了让基类指针指向派生类对象时能使用基类指针调用派生类的同名同参数成员函数,C++引入了虚拟成员函数。 Why? 根据赋值兼容规则,派生类的对象可以代替基类对象。如果用基类类型的指针指向派生类对象,可以通过这个指针访问该对象,但访问到的只是从基类继承来的同名成员。 9.4.1 虚函数的定义 一、虚函数的定义格式   定义虚函数的格式: virtual 返回类型 函数名(参数表); virtual 关键字该成员函数为虚函数 也是一个类的成员函数 析构函数可定义为虚函数,构造函数不能定义虚函数。 9.4.1 虚函数的定义 【例9.8】虚函数怎样实现多态性: #includeiostream.h class B0{ public: virtual void display() {coutB0::display()endl;} }; //基类B0声明 class B1:public B0 { public: virtual void display() {coutB1::display()endl;} }; virtual仅用于类定义中,如虚函数在类外定义,不可加virtual; 派生类中重定义虚函数必须与基类中的虚函数同名外,还必须同参数表,同返回类型。 9.4.1 虚函数的定义 class D1:public B1 { public: void display() {coutD1::display()endl;} }; 当某一个类的一个成员函数被定义为虚函数,则由该类派生出来的所有派生类中,该函数始终保持虚函数的特征。 B0类 vo

文档评论(0)

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

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

1亿VIP精品文档

相关文档