#include<iostream>
using namespace std;
class X
{
int i;
public:
X(int a=0) : i(a) {}
friend X operator+ (const X& left,const X&right);
};
X operator+ (const X& left,const X&right) // Method 1
{
return X(left.i + right.i);
}
X operator+ (const X& left,const X&right) // Method 2
{
X temp(left.i + right.i);
return temp;
}
int main()
{
X a(2),b(3),c;
c=a+b;
c.print();
return 0;
}
在这段代码中,运算符+通过两种不同的方法进行了重载。
我的问题是:这些方法之间有什么区别,哪一个更实用?
return {left.i + right.i}
是第三种方法,它也可以通过一些微不足道的优化实现相同的效果。 - Yakk - Adam Nevraumont