运算符重载

c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。

简单运算符重载的实力“:

class mainclass{
public:
	mainclass(int a, int b)
	{
		this->a = a;
		this->b = b;
	}
	void print()
	{
		cout <<a<<"+"<<b<<"i"<< endl;
	}
public:
	int a;
	int b;

};

mainclass complex(mainclass & opp1, mainclass & opp2)
{
	mainclass tem(opp1.a + opp2.a, opp1.b + opp2.b);
	return tem;
}
int main()
{
	mainclass opp3(1, 2);
	mainclass opp4(3, 4);
	mainclass opp5=complex(opp3, opp4);
	opp5.print();
	system("pause");
	return 0;
}
上面mainclass opp5=complex(opp3,opp4);的调用方式与普通的显示调用没什么区别,还是与以往的函数调用一样复杂,为了简化这种复杂的调用机制,我们引入了运算符重载操作:

class mainclass{
public:
	mainclass(int a, int b)
	{
		this->a = a;
		this->b = b;
	}
	void print()
	{
		cout <<a<<"+"<<b<<"i"<< endl;
	}
public:
	int a;
	int b;

};
#if 0
mainclass complex(mainclass & opp1, mainclass & opp2)
{
	mainclass tem(opp1.a + opp2.a, opp1.b + opp2.b);
	return tem;
}
#endif
mainclass operator+(mainclass & opp1, mainclass & opp2)
{
	mainclass tem(opp1.a + opp2.a, opp1.b + opp2.b);
	return tem;
}
int main()
{
	mainclass opp3(1, 2);
	mainclass opp4(3, 4);
#if 0
	mainclass opp5=complex(opp3, opp4);
	opp5.print();
#endif
	mainclass opp6 = opp3 + opp4;
	opp6.print();
	system("pause");
	return 0;
}
当编译器遇到对象+对象这种操作时会自动找到operator+这份函数中去执行相应的操作。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值