#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;
}
このコードでは、演算子+は2つの異なる方法でオーバーロードされています。C++での演算子オーバーロードのこれらのメソッドの相違点
私の質問これらの方法の違いは何ですか?また、使用するのがより実用的であると考えられるべきですか?
C++ 11では、 'return {left.i + right.i}'は方法3で、同じことをやっています(些細な最適化の後も)。 – Yakk