将运算符+重载为适用于复数加法,重载函数不作为成员函数,而放在类外,作为Complex类的友元函数

        对运算符重载的函数有两种处理方式:(1)把运算符重载的函数作为类的成员函数:(2)运算符重载的函数不是类的成员函数(可以是一个普通函数),在类中把它声明为友元函数。下面对这种方式的特点作一些分析。
有的读者可能对运算符重载的函数提出这样的问题:"+"是双目运算符,为什么重载函数中只有一个参数呢?实际上,运算符重载函数应当有两个参数,但是,由于重载函数是Complex类中的成员函数,因此有一个参数是隐含的,运算符函数是用this指针隐式地访问类对象的成员。可以看到,重载函数operator+访问了两个对象中的成员,一个是this指针指向的对象中的成员,一个是形参对象中的成员。如this->real+c2.real,this->real就是c1.real。
        在上一篇文章中已说明,在将运算符函数重载为成员函数后,如果出现含该运算符的表达式,如c1+c2,编译系统把它解释为

        c1.operator+(c2)
即通过对象c1调用运算符重载函数"operator+",并以表达式中第2个参数(运算符右侧的类对象c2)作为函数实参。运算符重载函数的返回值是Complex类型,返回值是复数c1和c2之和(Complex(c1.real+c2.real,c1.imag+c2.imag))。
        运算符重载函数除了可以作为类的成员函数外,还可以是非成员函数。在有关的类中把它声明为友元函数。这就是本节开头提到的第(2)种方式,即友元运算符重载函数

编写程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值