《计算机网络原理》第八章-多态和虚函数-精选课件.pdf
《《计算机网络原理》第八章-多态和虚函数-精选课件.pdf》由会员分享,可在线阅读,更多相关《《计算机网络原理》第八章-多态和虚函数-精选课件.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第第八八章章 多多态态和和虚虚函函数数C+第 1 页 共 24 页本本章章主主要要内内容容l多多态态性性l虚虚函函数数l多多重重继继承承与与虚虚函函数数l类类成成员员函函数数指指针针与与多多态态性性第 2 页 共 24 页多多态态性性 所谓多态性就是不同对象收到相同的消息时,产生不同的动作.直观地说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数.第 3 页 共 24 页多多态态性性多多态态性性 编编译译时时的的多多态态性性静静态态联联编编运运行行时时的的多多态态性性动动态态联联编编运运行行时时的的多多态态性性是
2、是指指在在程程序序执执行行前前,无无法法根根据据函函数数名名和和参参数数来来确确定定该该调调用用哪哪一一个个函函数数,必必须须在在程程序序执执行行过过程程中中,根根据据执执行行的的具具体体情情况况来来动动态态地地确确定定.它它是是通通过过类类继继承承关关系系和和虚虚函函数数来来实实现现的的.目目的的也也是是建建立立一一种种通通用用的的程程序序.通通用用性性是是程程序序追追求求的的主主要要目目标标之之一一.通通过过函函数数的的重重载载和和运运算算符符的的重重载载来来实实现现的的.第 4 页 共 24 页#includeclass A public:void show()coutA;class B
3、:public A public:void show()coutshow();pc=&b;pc-show();输输出出结结果果为为:A A声声明明的的基基类类指指针针只只能能指指向向基基类类第 5 页 共 24 页虚虚函函数数虚函数提供了一种更为灵活的多态性机制.虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,即所谓的动态联编.l虚函数的作用在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数.当编译器编译虚函数时,编译系统将用动态连接的方式进行编译.即在编译时不确定该虚函数的版本,而是用一种机制(虚函数表),在运行过程根
4、据其所指向的实例决定使用哪一个函数版本.第 6 页 共 24 页虚虚函函数数l定义虚函数的一般格式为:virtual 成员函数名().virtual void show(int x)/定义虚函数show()cout“x=xendl;l 说明:l 1)当基类的某个成员函数为虚函数时,它的所有派生类中与虚函数相同的函数都为虚函数,不管它们前面有没有冠以virtuall 2)当基类中的某个成员函数被定义为虚函数时,在其派生类中通常要对该函数重新定义.第 7 页 共 24 页#includeclass Base public:Base(int x,int y)a=x;b=y;virtual void
5、show()/定定义义虚虚函函数数show()coutBase-n;couta bendl;private:int a,b;class Derived:public Base public:Derived(int x,int y,int z):Base(x,y)c=z;void show()/重重新新定定义义虚虚函函数数show()cout Derived-n;coutcshow();/调调用用基基类类Base的的show()版版本本 pc=&mc;pc-show();/调调用用派派生生类类Derived的的show()版版本本 程程序序运运行行结结果果如如下下:Base-60 60Deriv
6、ed-30 第 9 页 共 24 页虚虚函函数数虚虚函函数数的的限限制制:1.必必须须是是成成员员函函数数2.不不能能是是静静态态成成员员函函数数3.不不能能是是inline函函数数4.构构造造函函数数不不能能是是虚虚函函数数第 10 页 共 24 页虚虚函函数数运运行行中中的的多多态态需需满满足足的的条条件件:1.首先类之间满足类型兼容规则2.派生类改写了虚函数;3.要由成员函数来调用或者通过指针、引用来访问虚函数.第 11 页 共 24 页虚虚函函数数l虚函数与函数重载在一个派生类中重新定义基类的虚函数是函数重载的另一种特殊形式,但它不同于一般的函数重载.l l当重载一个虚函数时,要求函数
7、名、返回类型、参量个数、参量类型和顺序都与基类中原型完全相同.如有不同,系统会根据不同情况分别处理.有如下两种情况:l 1.仅返回类型不同,其余均相同,系统会当作出错处理.l 2.函数原型不同,仅函数名相同.此时,系统会将它认为是一般的函数重载,对该函数的调用不具有动态多态性.第 12 页 共 24 页虚虚函函数数注注意意:1.构构造造函函数数不不能能定定义义为为虚虚函函数数2.析析构构函函数数可可以以定定义义为为虚虚函函数数3.如如果果一一个个类类中中定定义义了了虚虚函函数数,则则析析构构函函数数也也应应定定义义为为虚虚函函数数4.若若基基类类的的析析构构函函数数为为虚虚函函数数,而而派派生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络原理 计算机网络 原理 第八 函数 精选 课件
限制150内