多态性用同样接口访问功能不同的函数静态联编和动态联.ppt_第1页
多态性用同样接口访问功能不同的函数静态联编和动态联.ppt_第2页
多态性用同样接口访问功能不同的函数静态联编和动态联.ppt_第3页
多态性用同样接口访问功能不同的函数静态联编和动态联.ppt_第4页
多态性用同样接口访问功能不同的函数静态联编和动态联.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章多态性,多态性:用同样接口访问功能不同的函数。静态联编和动态联编 动态联编:程序运行时根据指针实际的指向来确定运行函数,指向基类的指针虚函数(在基类中定义) 根据赋值兼容规则,可使用派生类的对象代替基类的对象。利用基类类型的指针指向派生类,可以通过这个指针来使用派生类的成名函数。如果这个成员函数是普通的成员函数,通过基类类型的指针访问的是基类的同名函数;如果成员函数是虚函数,则可使用基类类型的指针访问该指针正在指向的派生类的同名函数 虚函数的访问权限不影响对它进行动态联编 在派生类中定义的同名函数,参数个数和相应类型以及返回类型与基类完全一样,则有无virtual都是虚函数 构造函数不能是虚函数,析构函数可以是虚函数 虚函数不能是友元函数,不能是静态成员函数,class base1 public: virtual void fun(int i) coutfun(10); ,class base1 public: virtual void fun(int i) coutfun(10); p2=,class base1 public: virtual void fun(int i) coutfun(10); p2=,第五章多态性,在构造函数和析构函数中调用虚函数:采用静态联编,即调用自己或基类的page例5_4 纯虚函数与抽象类 class 类名virtual 类型 函数名(参数列表)=0; 纯虚函数不能在构造函数中调用,class base public: int x; base(int a)x=a;coutfun1(); pBase-fun2(); pDerived-fun1(); pDerived-fun2();,base():5 derived():25 fun1 in derived:25 fun2 in base:5 fun1 in derived:25 fun2 in derived:25 derived():25 base():5,勘误表,P100 “并且假设有指针pa、pb、pc并说明如下(第二行) B *pb; P102例题第六行 pa-fb();,例题分析,对于类定义 class A public:virtual void func1() void func2(); class B:public A public:void func1()cout“class B func 1”endl; virtual void func2()cout“class B func2”endl; 下面正确的叙述是 A.A:func2()和B:func1()都是虚函数 B.A:func2()和B:func1()都不是虚函数 C.B:func1()是虚函数,而A:func2()不是虚函数 D.B:func1()不是虚函数,而A:func2()是虚函数,C,例题分析,类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p-A:func()将 A.调用类A中的函数func() B.调用类B中的函数func() C.根据p所指的对象类型而确定调用类A中或类B中的函数func() D.既调用类A中的函数,也调用类B中的函数,A,C+支持两种多态性分别是 多态性和 多态性,编译时的,运行时的,要在调用虚函数的时候强制进行静态联编,可以通过在调用中对虚函数加 实现。,成员名限定,写出下面程序的输出结果,例题分析,#include template T f(T *a,T *b,int n) T s=(T)0; for(int i=0;in;i+) s+=ai*bi; return s; void main() double c5=1.1,2.2,3.3,4.4,5.5,d5=10.0,100.0,1000.0; coutf(c,d,5)endl; 输出为:,3531,写出下面程序的输出结果,#include template void f(T a33,T b33,T c33) for(int i=0;i3;i+) for(int j=0;j3;j+) cij=(T)0; for(int k=0;k3;k+) cij+=aik*bjk; void main() int a33=1,2,3,4,5,6,7,b33,c33=2,0,2,0,0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论