可能重複:
Operator Overloading in C++ as int + obj
Operator overloadingc++-faq重載運營商爲了
我有一個Point
對象與此操作:
Point operator +(float other) const {
return Point(x + other, y + other, z + other);
}
我可以執行加法像這樣:
point + 10
但我不能以相反的順序執行它:
10 + point
是否有另一家運營商,我需要爲了提供這種功能超載?
的確。但許多人(例如Meyers)會認爲隱式轉換構造函數會導致問題... –
@OliCharlesworth:他們肯定會*導致一些問題,但是當您仔細觀察時,當您從類轉換爲基本類型時,它們經常出現類型。從基本類型到班級*往往會更安全(儘管它肯定會*仍然會引發問題)。 –
特別是在這種情況下:'point + 10'已經結合了矢量和標量值的數學概念,允許用戶寫'10'來代替'point_offset(10,10,10)'(注意點和向量值也略有不同 - 向量可以用來表示相對於原點的點,但並非所有的向量*都是*點,並且在「將兩個點相加在一起」在數學上沒有意義)。如果你要將這些概念結合起來,那麼對我而言,允許隱式轉換是有意義的。如果你不想合併它們,不要允許'Point + float'。 –