双目运算符重载

双目运算符重载

#include <iostream>
using namespace std;
class complex
{
public:
	complex():real(0),imag(0){};
	complex(int r,int i):real(r),imag(i){};
	~complex(){}
	void display();
	//类外重载运算符要声明为友元类,否则无法使用私有成员。
	friend complex operator+(const complex&c1,const complex&c2);
	friend complex operator+(const complex&c1,const int i);
	friend complex operator+(const int i,const complex&c1);
private:
	int real;
	int imag;
};
void complex::display()
{
	cout<<"("<<real<<","<<imag<<")";
}
//类外定义运算符重载,用于两个对象的相加
complex operator+(const complex&c1,const complex&c2)
{
	complex temp;
	temp.real=c1.real+c2.real;
	temp.imag=c1.imag+c2.imag;
	return temp;
}
//类外定义运算符重载,用于对象和数的相加。
complex operator+(const complex&c1,const int i)
{
	complex temp;
	temp.real=c1.real+i;
	temp.imag=c1.imag;
	return temp;
}
//类外定义运算符重载,用于数和对象的相加,注意:此时不能把运算符重载为成员函数,运算符“+”的左侧不是类对象,编译出错。
complex operator+(const int i,const complex&c1)
{
	complex temp;
	temp.real=c1.real+i;
	temp.imag=c1.imag;
	return temp;
}
/*重载为成员函数的调用形式相当于:c1.operator(c2);
  重载为类外友元函数的调用形式相当于:operator(c1,c2);
 */
int main()
{
	complex t1(1,2),t2(0,1),c1,c2,c3;
	c1=t1+t2;
	c1.display();
	c2=t1+1;
	c2.display();
	c3=1+t1;
	c3.display();
}

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值