以下のように複数のパラメータで演算子+オーバーロードを実行しています。複数のパラメータを持つオーバーロード演算子+でconst参照を渡す理由
#include <iostream>
using namespace std;
class Integer{
int value;
public:
Integer(int i) {value=i;};
int getValue() { return value;};
friend Integer operator+ (Integer & a, Integer & b){
Integer I (a.value+b.value);
return I;
};
};
int main() {
Integer a(1), b(2), c(3);
Integer d = a+b+c;
cout<<d.getValue()<<endl;
return 0;
}
"演算子+に一致しません"をコンパイルして返すことはできません。私は複数のパラメータ((a + b)+ c)のアルゴリズムを読んで理解しています。なぜそれは動作しません?
friend Integer operator+ (const Integer & a,const Integer & b){
Integer I (a.value+b.value);
return I;
};
そして
friend Integer & operator+ (Integer & a,Integer & b){
Integer I (a.value+b.value);
return I;
};
しかし、私はなぜ知らない: しかし、私はそれを動作させるには二つの方法を発見しました。ありがとうあなたの
operator+
署名で
オーバーロードされた演算子の[canonical forms](http://en.cppreference.com/w/cpp/language/operators)をお読みください。それはすべて明確に定義されており、十分に文書化されています。 – Useless