第7章多态性和虚函数.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第7章多态性和虚函数.ppt》由会员分享,可在线阅读,更多相关《第7章多态性和虚函数.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章多态性和虚函数现在学习的是第1页,共24页本章内容本章内容 多态性概述多态性概述 运算符重载运算符重载 虚函数虚函数现在学习的是第2页,共24页7.1多多态性概述性概述l多态性是面向对象程序设计的一个重要特征。l多态性(Polymorphism):是指发出同样的消息被不同类型的对象接收时而导致不同的行为。(所谓发消息就是调用类中的成员函数。)l多态性的分类:参数多态参数多态包含多态包含多态重载多态重载多态强制多态强制多态静态联编静态联编动态联编动态联编通用多态通用多态专用多态专用多态现在学习的是第3页,共24页说明:l强制多态(coercion):编译程序通过语义操作,把操作对象的类型强
2、行加以变换,以符合函数或操作符的要求。例如:3.143/2;强制类型转换(int)3.14+2函数原型int f1(int);函数调用 f1(3.14);l重载多态(overloading):同一个名(操作符函数名)在不同的上下文中有不同的类型。函数重载运算符重载int add(int x,int y)return x+y;double add(double x,double y)return x+y;coutadd(3,4)endl;coutadd(3.4,4.7)endl;现在学习的是第4页,共24页l参数多态(parametric):采用参数化模板,通过给出不同的类型参数,使得一个结构有
3、多种类型。#include template/函数模板T add(T*x,int n)T s=0;for(int i=0;in;i+)s+=xi;return s;void main()int x=1,2,3,4,5;double y=1.1,2.2,3.3,4.4,5.5;cout整数相加结果:add(x,5)n;cout实数相加结果:add(y,5)n;现在学习的是第5页,共24页class A int Buffer10;public:A()for(int k=0;k=0&i10)Bufferi=v;else cout=0&i10)return Bufferi;else cout下标越界n
4、;return 0;class B double Buffer5;public:B()for(int k=0;k=0&i5)Bufferi=v;else cout=0&i5)return Bufferi;else cout下标越界n;return 0;template/模板参数表class A double BufferN;public:A()for(int k=0;kN;k+)Bufferk=0;void SetElem(int i,T v);T GetElem(int i);templatevoid A:SetElem(int i,T v)if(i=0&iN)Bufferi=v;else
5、cout 下标越界n;templateT A:GetElem(int i)if(i=0&iN)return Bufferi;else cout下标越界n;return 0;/模板实例化void main()A m;A x;A s;现在学习的是第6页,共24页l包含多态(inclusion):同样的操作可用于基类及其派生类。派生类中成员函数的重定义(覆盖,overwrite)虚函数l联编(binding,绑定)的概念:使计算机程序彼此关联的过程,将一个标识符和一个存储地址联系在一起的过程。静态联编(static binding,静态多态性):在编译期间确定的多态性。主要包括重载多态和参数多态。动
6、态联编(dynamic binding,动态多态性):在运行期间才能确定的多态性。主要包括包含多态和强制多态。现在学习的是第7页,共24页整数的加法:1+12实数的加法:1.6+2.64.2复数的加法:(1+2i)+(3+4i)=4+6i矢量的加法:n维线性空间的加法。数学中的运算符重载现象 7.2 运算符重载运算符重载现在学习的是第8页,共24页l一个例子#include class Aint x,y;public:A(int i=1,int j=2):x(i),y(j)void print()coutx=x,y=yendl;void main()A a(10,20),b(30,40),c;
7、c=a+b;c.print();A add(A m,A n)A k;k.x=m.x+n.x;k.y=m.y+n.y;return k;现在学习的是第9页,共24页#include class Aint x,y;public:A(int i=1,int j=2):x(i),y(j)void print()coutx=x,y=yendl;A add(A m,A n)A k;k.x=m.x+n.x;k.y=m.y+n.y;return k;void main()A a(10,20),b(30,40),c;c=add(a,b);c.print();#include class Aint x,y;pub
8、lic:A(int i=1,int j=2):x(i),y(j)void print()coutx=x,y=yendl;friend A add(A,A);A add(A m,A n)A k;k.x=m.x+n.x;k.y=m.y+n.y;return k;void main()A a(10,20),b(30,40),c;c=add(a,b);c.print();A add(const A&m,const A&n)return A(m.x+n.x,m.y+n.y);friend A add(const A&,const A&);现在学习的是第10页,共24页#include class Ain
9、t x,y;public:A(int i=1,int j=2):x(i),y(j)void print()coutx=x,y=yendl;A add(const A&r)return A(x+r.x,y+r.y);/*A add(A m,A n)A k;k.x=m.x+n.x;k.y=m.y+n.y;return k;*/void main()A a(10,20),b(30,40),c;c=a.add(b);c.print();现在学习的是第11页,共24页#include class Aint x,y;public:A(int i=1,int j=2):x(i),y(j)void print
10、()coutx=x,y=yendl;A operator+(const A&r)return A(x+r.x,y+r.y);void main()A a(10,20),b(30,40),c;c=a+b;/加法运算符加法运算符“+”的重载的重载c.print();现在学习的是第12页,共24页#include class Aint x,y;public:A(int i=1,int j=2):x(i),y(j)void print()coutx=x,y=yendl;friend A operator+(const A&,const A&);A operator+(const A&m,const A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多态性 函数
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内