第7章 运算符重载PPT讲稿.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讲稿.ppt》由会员分享,可在线阅读,更多相关《第7章 运算符重载PPT讲稿.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章 运算符重载第1页,共21页,编辑于2022年,星期一 C+C+语言允许程序员重新定义已有的运算符,语言允许程序员重新定义已有的运算符,使其能按用户的要求完成一些特定的操作,这就使其能按用户的要求完成一些特定的操作,这就是所谓的是所谓的运算符重载运算符重载(operator overload)(operator overload)。运算。运算符重载与函数重载相似,其目的是设置某一运算符重载与函数重载相似,其目的是设置某一运算符,让它具有另一种功能,尽管此运算符在原先符,让它具有另一种功能,尽管此运算符在原先C+C+语言中代表另一种含义,但他们彼此之间并语言中代表另一种含义,但他们彼此之间
2、并不冲突。不冲突。C+C+会根据运算符的位置辨别应使用哪会根据运算符的位置辨别应使用哪一种功能进行运算。一种功能进行运算。第2页,共21页,编辑于2022年,星期一7.1 7.1 运算符重载概述运算符重载概述运运算算符符重重载载是是对对系系统统提提供供的的运运算算符符赋赋予予多多重重含含义义,同同一一个个运运算算符符作作用用于于不不同同类类型型的的数数据据导致不同类型的行为。导致不同类型的行为。运运算算符符重重载载的的实实质质就就是是函函数数重重载载。在在实实现现过过程程中中,首首先先把把指指定定的的运运算算表表达达式式转转化化为为对对运运算算符符函函数数的的调调用用,运运算算对对象象转转化化
3、为为运运算算符符函函数数的的实实参参,然然后后根根据据实实参参的的类类型型来来确确定定需需要要调调用用的函数,这个过程是在编译过程中完成的。的函数,这个过程是在编译过程中完成的。C+C+可以重载的运算符如表可以重载的运算符如表7-17-1所示所示 ;C+C+不能被重载的运算符如表不能被重载的运算符如表7-27-2所示。所示。第3页,共21页,编辑于2022年,星期一表表7-1 7-1:C+C+可以重载的运算符可以重载的运算符!+-*&/%=!=|&+=*=/=%=&=|=,-*-()=+-newdelete表表7-2 7-2:C+C+不可以重载的运算符不可以重载的运算符.*:?:?:#第4页,
4、共21页,编辑于2022年,星期一v运算符重载的规则如下:运算符重载的规则如下:(1 1)C+C+中中的的运运算算符符除除了了少少数数几几个个以以外外,几几乎乎全全部部可可以以重重载载,而且只能重载已有的这些运算符。而且只能重载已有的这些运算符。(2 2)重载之后运算符的优先级和结合性都不会改变重载之后运算符的优先级和结合性都不会改变。(3 3)运算符重载是针对新类型数据的实际需要,对原有)运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当运算符进行适当的改造。一般来讲,重载的功能应当与原有与原有功能类似功能类似。(4 4)运算符重载不能改变原运算符的操
5、作对象个数,同时运算符重载不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。至少要有一个操作对象是自定义类型。第5页,共21页,编辑于2022年,星期一7.2 7.2 运算符重载的实现运算符重载的实现运算符的重载形式有两种:重载为类的成员函数和重载为类的友元函数。运算符的重载形式有两种:重载为类的成员函数和重载为类的友元函数。1.1.运算符重载为类的成员函数的语法形式如下:运算符重载为类的成员函数的语法形式如下:operator operator ();friend friend operator operator ();其中其中:指定了重载运算符的返回值类型指定了重载运算
6、符的返回值类型;operatoroperator是定义运算符重载函数的关键词是定义运算符重载函数的关键词;给定了要重载的运算符名称,是给定了要重载的运算符名称,是C+C+中可重载的运算符中可重载的运算符;中给出重载运算符所需要的参数和类型中给出重载运算符所需要的参数和类型;对于运算符重载为友元函数的情况,还要在函数类型说明之前使用对于运算符重载为友元函数的情况,还要在函数类型说明之前使用friendfriend关键词来说明。关键词来说明。第6页,共21页,编辑于2022年,星期一注意事项:注意事项:当运算符重载为类的成员函数时,函数的参数个数比原来当运算符重载为类的成员函数时,函数的参数个数比
7、原来的运算数个数要少一个(后缀的运算数个数要少一个(后缀+、-除外);当重载为类除外);当重载为类的友元函数时,参数个数与原运算数的个数相同。的友元函数时,参数个数与原运算数的个数相同。单目运算符最好重载为成员函数;单目运算符最好重载为成员函数;双目运算符则最好重载为友元函数;双目运算符则最好重载为友元函数;运算符重载的含义必须清楚;运算符重载的含义必须清楚;运算符重载不能有二义性;运算符重载不能有二义性;第7页,共21页,编辑于2022年,星期一7.3 7.3 单目运算符重载单目运算符重载类类的的单单目目运运算算符符可可重重载载为为一一个个没没有有参参数数的的非非静静态态成成员员函函数数或或
8、者者带带有有一一个个参参数数的的非非成成员员函函数数,参参数数必必须须是是用户字定义类型的对象或者是对该对象的引用。用户字定义类型的对象或者是对该对象的引用。在在C+C+中中,单单目目运运算算符符有有+和和-,它它们们是是变变量量自自动动增增1 1和和自自动动减减1 1的的运运算算符符。在在类类中中可可以以对对这这两两个个单单目目运运算符进行重载。算符进行重载。如如同同“+”运运算算符符有有前前缀缀、后后缀缀两两种种使使用用形形式式,“+”和和“-”重重载载运运算算符符也也有有前前缀缀和和后后缀缀两两种种运运算算符符重重载形式,以载形式,以“+”重载运算符为例,其语法格式如下:重载运算符为例,
9、其语法格式如下:operator+operator+();();/前缀运算前缀运算 operator+operator+(intint););/后缀运算后缀运算 第8页,共21页,编辑于2022年,星期一使用前缀运算符的语法格式如下:使用前缀运算符的语法格式如下:+;使使用用运运算算符符前前缀缀时时,对对对对象象(操操作作数数)进进行行增增量量修修改改,然然后后再再返返回回该该对对象象。所所以以前前缀缀运运算算符符操操作作时时,参参数数与与返返回回的的是是同同一一个个对对象象。这这与与基基本数据类型的运算符前缀类似,返回的也是左值。本数据类型的运算符前缀类似,返回的也是左值。使用后缀运算符的语
10、法格式如下:使用后缀运算符的语法格式如下:+;使使用用运运算算符符后后缀缀时时,必必须须再再增增量量之之前前返返回回原原有有的的对对象象值值。为为此此,需需要要创创建建一一个个临临时时对对象象,存存放放原原有有的的对对象象,以以便便对对操操作作数数(对对象象)进进行行增增量量修修改改时时,保保存存最最初初的的值值。运运算算符符后后缀缀操操作作时时返返回回的的时时原原有有对对象象值值,不不是是原原有有对对象象,原原有有对对象象已已经经被被增增量量修修改改,所所以以,返返回的应该是存放原有对象值的临时对象。回的应该是存放原有对象值的临时对象。(见例(见例1 1:+运算符重载)运算符重载)第9页,共
11、21页,编辑于2022年,星期一7.4 7.4 双目运算符重载双目运算符重载对对于于双双目目运运算算符符,一一个个运运算算数数是是对对象象本本身身的的数数据据,由由thisthis指指针针给给出出,另另一一个个运运算算数数则则需需要要通通过过运运算算符符重重载载函函数数的的参参数数表表来来传传递递。下面分别介绍这两种情况。下面分别介绍这两种情况。将双目运算符将双目运算符B B重载为类的成员函数:重载为类的成员函数:使之能够实现表达式使之能够实现表达式“oprd1 B oprd2oprd1 B oprd2”,其中,其中oprd1oprd1为为A A类的对象,则应当把类的对象,则应当把B B重载为
12、重载为A A类的成员函数,该函数只有一个形参,形参的类型是类的成员函数,该函数只有一个形参,形参的类型是oprd2oprd2所属的所属的类型。经过重载之后,表达式类型。经过重载之后,表达式oprd1 B oprd2oprd1 B oprd2就相当于函数调用就相当于函数调用“oprd1.operator Boprd1.operator B(oprd2oprd2)”。将双目运算符将双目运算符B B重载为类的友元函数:重载为类的友元函数:这样,它就可以自由地访问该这样,它就可以自由地访问该类的任何数据成员。这时,运算符所需要的运算数都需要通过函数的类的任何数据成员。这时,运算符所需要的运算数都需要通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 运算符重载PPT讲稿 运算 重载 PPT 讲稿
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内