第6章运算符重载、虚函数与多态性.ppt
《第6章运算符重载、虚函数与多态性.ppt》由会员分享,可在线阅读,更多相关《第6章运算符重载、虚函数与多态性.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+语言与应用基础第 5 章 运算符重载、虚函数与多态性【本章内容】1.运算符重载的基本概念和运算符重载的规则,及运算符重载为成员函数与友员函数。2.虚函数的基本概念及虚函数在C+语言中的应用。3.多态性的概念,静态多态性与动态多态性的意义及其在C+程序设计中的应用。4.纯虚函数与抽象类的基本概念,纯虚函数与抽象类在派生类编程中的应用。5.多态性编程应用举例。制作 张超英C+语言与应用基础$6.1 多态性概述多态性是考虑类与类层次关系以及类自身内部特定成员函数之间的关系问题,是解决功能和行为的再抽象问题。【多态性】多态性,就是不同对象收到相同的消息产生不同的动作。C+中多态性的实现与联编概念有
2、关。联编:一个程序经过编译、连接,成为可执行文件的过程(把可执行代码联编在一起的过程)。静态联编:在运行之前就完成的联编。-调用速度快,执行效率高,要求编译时就知道调用函数的全部信息。静态联编支持的多态性称为编译时多态性(静态多态性)。动态联编:系统在运行时动态实现某一动作。-更灵活、问题抽象性和程序易维护性。动态联编支持的多态性称为运行时多态性(动态多态性)。通过继承和虚函数来实现。制作 张超英C+语言与应用基础$6.2 运算符重载运算符重载是对于已有的运算符赋予多重含义,同一个运算符作用于不同类型的数据导致不同类型的行为。运算符重载的实质就是函数重载。实现过程中,首先把指定的运算表达式转化
3、为对运算符函数的调用,运算对象转换为运算符函数的实参,然后根据实参的类型确定需要调用的函数,这个过程是在编译过程中完成的。【运算符重载的规则】1.C+中的运算符出除了少数几个外,全部可以重载,且只能重载已有的这些运算符,见表6.1。制作 张超英C+语言与应用基础$6.2 运算符重载2.重载之后运算符的优先级和结合性都不改变。3.运算符重载是针对新类型数据的实际需要,对原有运算符进行改造,重载的功能应当与原有功能类似,不能改变原有运算符的操作对象个数,同时至少有一个操作对象是自定义类型。运算符重载为成员函数的一般形式:函数类型 operator 运算符(形参表)函数体;运算符重载为类的友元函数:
4、friend 函数类型 operator 运算符(形参表)函数体;制作 张超英C+语言与应用基础$6.2 运算符重载“函数类型”是重载运算符的返回值类型,“operator”是定义运算符重载函数的关键字,运算符给定了要重载的运算符。形参表中给出运算符所需的参数和类型。当运算符重载为类的成员函数时,参数个数比原操作数个数少一个(后置+,-除外);当重载为类的友元函数时,参数个数与原操作数个数相同。【运算符重载为成员函数】运算符重载实质上就是函数重载,如果重载为成员函数,它就可以自由地访问本类的数据成员,实际使用时,总是通过该类的某个对象来访问重载的运算符。制作 张超英C+语言与应用基础$6.2
5、运算符重载如果是双目运算符,一个操作数是对象本身的数据,由this指针给出,另一个操作数则通过运算符重载的参数表进行传递,如果是单目运算符,操作数由对象的this指针给出,无参数。见表6.2所示。见P156 例6.1。【运算符重载为友元函数】运算符重载为类的友元函数,它不可以自由地访问该类的任何数据成员,运算符需要的操作数都需要通过函数的形参来传递,在形参中形参从左到右的顺序就是运算符操作数的顺序。等价的函数调用见:P159 表6.2。例见:P159 例6.2。制作 张超英C+语言与应用基础$6.2 运算符重载【成员运算符函数与友元运算符函数比较】1.对双目运算符而言,成员函数带有一个参数,而
6、友元运算符函数带有两个参数;对于单目运算符,成员运算符函数不带参数,而友元运算符函数带一个参数。2.双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但有时必须重载为友元运算符函数。(见:P161)3.成员运算符函数和友元运算符函数都可以用惯用表示方式调用,也可以用专用的方式调用。(表6.1和6.2)4.C+的大部分运算符既可说明为成员运算符函数,也可说明为友元运算符函数。制作 张超英C+语言与应用基础$6.2 运算符重载对于双目运算符,重载为一个友元运算符函数比重载为成员运算符函数便于使用,若一个运算符的操作需要修改类对象的状态,则选择成员运算符函数较好,如果运算符所需的操作(尤其是
7、第一个操作数)希望有隐式类型转换,则运算符重载必须用友元函数,而不能用成员函数。【”+”和”-”运算符的重载】运算符“+”和“-”可以是前置或后置运算符,都可以用运算符函数重载。对于前置方式“+a”,重载为成员函数:a.operator+(),重载为友元函数:operator+(a);对于后置方式(a+),重载为成员函数:operator+(int),重载为友元函数:operator+(a,int)。例6.3,6.4制作 张超英C+语言与应用基础$6.2 运算符的重载【下标运算符“”的重载】在重载“”时,C+也把它看成双目运算符,其操作数为“数组名”和“下标表达式”,相应的运算符为operat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运算 重载 函数 多态性
限制150内