..... この場合、演算子のオーバーロードはどのように機能しますか?私は、この演算子のオーバーロードは、このコードでは、ここでどのように機能するかを取得
class operatorOver {
public:
int a, b, c;
};
operatorOver operator+(const operatorOver &a, const operatorOver &b) {
operatorOver aa;
aa.a = b.a + a.a;
return aa;
}
int main()
{
operatorOver aaa, bbb, ccc;
aaa.a = 100;
bbb.a = 200;
ccc = aaa + bbb;
cout << ccc.a << endl;
system("pause");
};
が、この1つはここにどのように動作するか私は理解していない、このバージョンは....
class operatorOver {
public:
operatorOver operator+(const operatorOver &a) {
operatorOver aa;
aa.a = (*this).a + a.a;
return aa;
}
int a, b, c;
};
int main()
{
operatorOver aaa, bbb, ccc;
aaa.a = 100;
bbb.a = 200;
ccc = aaa + bbb;
cout << ccc.a << endl;
system("pause");
};
私が示した最初の1つは、ここでオーバーロードされている演算子のコードが2つのオブジェクトクラスを取り込んでいると仮定しています...
しかし、2番目の例では、パラメータに別のオブジェクトクラスを作成しても動作します。あなたがmain()を見ると、2つのオブジェクトクラスがまだ渡されていることがわかります。私は失われています。
、Iは、第一の方法(非メンバ関数)を好みますその場合、aがoperatorOverではない場合はa + bであり、operatorOverはaの型からoperatorOverへの変換コンストラクタを持つため、これは呼び出されますが、メンバ関数を使用するとそれは行われません。 Sidenote:正当な理由がない限り、資本でクラスを始める。彼らがラクダのケースを使用するなら、ほとんどのC++開発者の習慣です。したがって、operatorOverではなくOperatorOverです。 –