+ 演算子をオーバーロードすると、これを使用できます (クラスが className であると仮定します)
className operator+(className & c) { // version 1
className T;
...
return T;
}
また、私は使用することができます
className operator+(className & c) { // version 2
....
return *this;
}
ここに私の質問があります:
バージョン 2 では、参照を返しますか? なぜ?
バージョン 1 とバージョン 2、どちらが優れていますか?
私たちはチェーン =/<< を使用するためにオーバーロード =, << return by reference を書くことがよくありますが、なぜ参照なしではチェーン =/<< を使用できないのでしょうか。
もう 1 つの質問は、効果的な C++ で見た「可能な限り const を使用する」および「参照渡しを使用することを好む」ということです。
私がこのように書くと:
template<typename T>
void Print(const T data[], const int & arraySize) // i use the const, and &
{
for(inti = 0; i < arraySize; ++i)
cout << data[i] << " ";
cout << endl;
}
main() 関数を記述するときは、次のように記述します。
int iArray[14] = {7,3,32,2,55,34,6,13,29,22,11,9,1,5};
int numInts = 14; // do I need to specify numInts is const??
Print(iArray, numInts);