欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++中重载+=运算符

程序员文章站 2024-03-17 20:43:04
...

背景:今天在使用pair<int,int>时,想重载它的+=运算符,写成了如下形式:

pair<int,int> operator += (pair<int,int> a, pair<int,int> b)
{
	return make_pair(a.first+b.first,a.second+b.second);
}

结果发现在进行+=操作后,+=的左值并没有发生改变,

c++中重载+=运算符

转念一想,使用操作符实际上可以理解为一次函数的调用,因此,我想得到的值作为返回值返回了,但我并没有去使用它,因此,我们可以这么写:

c++中重载+=运算符

但是,这种写法显然不是我们想要的,因此,我们应该思考如何在重载函数内部改变a的值。

在我们现在这种写法下,在重载函数中的形参实际上只是实参在函数内部的一个副本,除了值相同外,形参与实参无其它联系,  因此,我们考虑用某种方式将实参传递到函数内部,常见的方法有两种:

引用传递:

c++中重载+=运算符

指针传递:

c++中重载+=运算符

当然,这个第二种写法并不是那么的自然,因此在重载函数中用引用来接受实参可能是一种比较理想的方法。

相关标签: c++