第九章 多态性与虚函数.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 多态性与虚函数

多态性的概念及其表现形式 顾名思义,多态的意思是一个事物有多种形态。从程序设计的角度看,通常指对于同一个消息、同一种调用,在不同的场合,不同的情况下,执行不同的行为。例如运算符的重载和虚函数。 多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。 消息──主要指对类的成员函数的调用。 C++ 系统支持二种多态性: 1.静态多态性──编译时的多态性,其具体实现主要有:函数重载(详见5.5.2,本章不再介绍)和运算符重载 2.动态多态性──运行时的多态性,其具体实现主要有:虚函数 运算符重载的方法 class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i) {real=r;imag=i;} Complex complex_add(Complex c2); void display( ); private: double real; double imag;}; Complex Complex∷complex_add(Complex c2) {Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c;} void Complex∷display( ) {cout″(″real″,″imag″i)″endl;} 运算符重载函数作为类成员函数和友元函数 class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i) {real=r;imag=i;} Complex operator+(Complex c2); void display( ); private: double real; double imag;}; Complex Complex∷operator+(Complex c2) { Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c;} void Complex∷display( ) {cout″(″real″,″imag″i)″endl;} 两者的区别 重载单目运算符 重载流插入运算符和流提取运算符 class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i) {real=r;imag=i;} Complex operator+(Complex c2); friend ostream operator (ostream,Complex); void display( ); private: double real; double imag;}; Complex Complex∷operator+(Complex c2) {return Complex(real+c2.real,imag+c2.imag);} void Complex∷display( ) {cout (real,imagi) endl;} ostream operator (ostream output,Complex c) {output (c.real+c.imagi) endl; return output;} 为什么运算符“”重载函数返回类型是引用 coutc3c2; 相当于operator (operator (cout,c3),c2) 无论函数返回的是什么,它都会成为下一个运算符的左边的参数,返回cout的当前值以便连续的输出. 联编与虚函数 联编也称绑定,是指源程序在编译后生成的可执行代码经过连接装配在一起的过程,即是指计算机程序自身彼此关联的过程, 按联编工作来分: 1. 静态联编:联编工作在编译连接阶段完成。 2. 动态联编:联编在程序运行阶段完成。 虚函数引例 #include iostream.h class A { public: void display(){cout\tA::display()endl; }}; class B: public A { public: void display(){cout\tB::display()endl; }}; class C: public B { public: void display(){cout\tC::display()endl; }}; 虚函数 ? 虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档