C++第四章运算符重载习题-1:非成员、非友元普通函数复数加法

#include<iostream>

using namespace std;

class Complex
{
public:
    Complex(){real=0,imag=0;}
    Complex(double r ,double i):real(r),imag(i){}
    double getReal(){return real;}
    double getImag(){return imag;}
    void display();
private:
    double real;
    double imag;
};

void Complex::display()
{
    cout<<real;
    if(this->getImag()>=0)cout<<"+";
    cout<<imag<<"i"<<endl;
}

Complex operator+(Complex &c1,Complex &c2)
{
    return Complex(c1.getReal()+c2.getReal(),c2.getImag() +c1.getImag());
}

int main()
{
    Complex c1(3,6),c2(4,10),c3;
    c3=c1+c2;
    c3.display();
}

开始一直在Complex类里写的方法为:

Complex operator + (Complex&,Complex&);

然后一直报错: 'Complex Complex::operator+(Complex&, Complex&)' must take either zero or one argument|

后来才意识到:重载二进制+运算符  有一个是它自己本身就是可以用this->去引用的。所以形参里只能有0个或者1个。不然就写友元函数。因为本来就是  一般情况下:双目运算符函数重载为友元函数,单目运算符重载为成员函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值