首页 理论教育C++程序设计基础教程:运算符重载函数调用格式

C++程序设计基础教程:运算符重载函数调用格式

【摘要】:运算符重载函数的调用格式与普通成员函数的调用格式类似,以双目运算符重载成员函数为例,其调用格式如下:左运算对象双目运算符右运算对象例如:对于前面的Complex,设计如下主函数:其中,“s3=s1+s2;”和“s4=s1-s2;”两个语句就是调用运算符重载函数。该函数执行完毕,释放tmp对象。

运算符重载函数的调用格式与普通成员函数的调用格式类似,以双目运算符重载成员函数为例,其调用格式如下:

左运算对象双目运算符右运算对象

例如:对于前面的Complex,设计如下主函数:

其中,“s3=s1+s2;”和“s4=s1-s2;”两个语句就是调用运算符重载函数。该主函数的执行结果如下:

s1∶2+5i

s2∶1+10i

s3∶3+15i

s4∶1-5i

实际上,C++遇到上述调用格式时,将自动转换成对重载函数的调用格式:

左运算对象.operator双目运算符(右运算对象)(www.chuimin.cn)

即双目运算符左边的对象成为调用重载函数的对象,而双目运算符右边的对象成为重载函数的实参。例如,将s3=s1+s2转换成s3=s1.operator+(s2)。

【例4.1】分析以下程序的执行结果。

解:上述程序中,类MyClass1的描述如图4.1所示。

图4.1 MyClass1类描述

MyClass1类中包含了重载运算符“+”的成员函数,它有一个MyClass1对象的形参,当执行“s3=s1+s2;”语句时,先计算表达式s1+s2,它相当于s1.operator+(s2),调用运算符“+”重载成员函数。s2对象作为实参,先建立一个临时对象tmp,tmp.n=n+s.n相当于tmp.n=s1.n+s2.n=30,然后返回tmp对象,通过赋值运算符(“=”可以用于对象赋值)将这个临时对象赋给s3,从而使得s3.n=30。该函数执行完毕,释放tmp对象。程序执行结果如下:

s1:n=10

s2:n=20

s3:n=30

C++中的“+”运算符原本不能用于对象的加法运算,因为有了运算符“+”重载成员函数,使得这种运算能够正确执行。