面向对象程序设计第十五讲.ppt

面向对象程序设计第十五讲.ppt

ID:56422005

大小:45.00 KB

页数:20页

时间:2020-06-17

面向对象程序设计第十五讲.ppt_第1页
面向对象程序设计第十五讲.ppt_第2页
面向对象程序设计第十五讲.ppt_第3页
面向对象程序设计第十五讲.ppt_第4页
面向对象程序设计第十五讲.ppt_第5页
资源描述:

《面向对象程序设计第十五讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、注意事项运算符重载函数operator@()可以返回任何类型,甚至可以使void类型,但通常返回类型与它所操作的类的类型相同,这样可使重载运算符用在复杂的表达式中。例如:复数的连续加、减。在重载运算符时,运算符函数所作的操作不一定要保持C++中该运算符原有的含义,但这样容易造成混乱。所以保持原含义,容易被接受,也符合人们的习惯。在C++中,用户不能定义新的运算符,只能从C++已有的运算符中选择一个恰当的运算符重载。C++编译器根据参数的个数和类型来决定调用哪个重载函数。因此,可以为同一个运算符定义几个运算符重载函数来进行不同的操作。运算符重载属于静态联编友元运算符重载在C++中,可以把运算符

2、函数定义成某个类的友元函数,称为友元运算符函数。友元运算符函数在类的内部的声明格式:friendtypeoperator@(参数表);定义格式:typeoperator@(参数表){//函数体}与成元运算符不同,友元运算符函数是不属于任何类对象的,它没有this指针。若重载的是双目运算符,则参数表中有两个操作数;若重载的是单目运算符,则参数表中只有一个操作数运算符重载为类的友元函数,就可以自由地访问该类的任何数据成员。这时,运算所需要的操作数都需要通过函数的形参来传递,在参数表中形参从左到右的顺序就是运算符操作数的顺序。友元函数的双目运算符重载对于双目运算符B,如果它的一个操作数为A类的对象

3、,就可以将B重载为A类的友元函数,该函数有两个形参,其中一个形参的类型是A类。重载后的使用方式:aa@bb;operator@(aa,bb);例子#includeclasscomplex{public:complex(doubler=0.0,doublei=0.0){real=r;imag=i;}friendcomplexoperator+(complexc1,complexc2);friendcomplexoperator-(complexc1,complexc2);voiddisplay();private:doublereal;doubleimag;};void

4、complex::display(){cout<

5、play();c3=c1-c2;c3.display();}友元函数的单目运算符重载对于前置单目运算符U,如果要实现表达式Uoprd,其中oprd为A类的对象,则U可以重载为A类的友元函数,函数的形参为A类的对象oprd。对于后置单目运算符“++”和“—”,如果要实现表达式oprd++或oprd--,其中oprd为A类的对象,那么运算符就可以重载为A类的友元函数,这时函数的形参有两个,一个是A类的对象oprd,另一个是整型(int)形参。成员运算符函数与友元运算符函数的比较对双目运算符而言,成员运算符函数带有一个参数,而友元运算符函数带有两个参数;对单目运算符而言,成员运算符不带参数,而友元

6、运算符函数带一个参数。双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但有些情况,必须使用友元函数。nclassnclass::operator+(intx){nclasstemp;temp.a=a+x;temp.b=b+x;returntemp;}nclassob;ob=ob+100;ob=100+ob;(error,?如何实现?)成员运算符函数和友元运算符都可以用习惯方式调用,也可以用他们专用的方式调用。习惯形式友元运算符函数调用形式成员运算符函数调用形式a+boperator+(a,b)a.operator+(b)-aoperator-(a)a.operator-()a++o

7、perator++(a,0)a.operator++(0)C++的大部分运算符即可说明为成员运算符,又可说明为友元运算符函数,究竟选择哪一种运算符函数好一些,没有定论,这主要取决于实际情况和程序员的习惯。一般而言,对于双目运算符,将它重载为一个友元运算符函数比重载为一个成员运算符函数便于使用。若一个运算符的操作需要修改类对象的状态,则选择成员运算符函数较好。如果运算符所需的操作数(尤其是第一个操作数)希望有隐

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。