爲什麼不能我用一個重載操作者以2個參數作爲這樣的類的成員:爲什麼重載操作符是類的成員只能有一個參數
myclass& operator+(const otherclass& cl, int value);
爲什麼不能我用一個重載操作者以2個參數作爲這樣的類的成員:爲什麼重載操作符是類的成員只能有一個參數
myclass& operator+(const otherclass& cl, int value);
類函數具有一個隱含的this
參數,所以在類中聲明的雙參數運算符會隱含地想要獲取比實際可能更多的參數:a + b
其中a
是類C
的一個實例,它是a.operator+(b)
的糖,而不是C::operator+(a, b)
。如果你只是想繼續經營的聲明與類的車身線條,你可以聲明爲friend
功能:
class C {
public:
friend C& operator+(const C& a, const C& b);
};
鑑於像a @ b
(其中@
是一些二進制運算符)的表達,並且過載被使用的是成員函數,它的處理方式如下:[email protected](b)
。
換句話說,二元運算符的左側操作數始終是其成員函數被調用的對象。它唯一的其他操作數是右手操作數,所以這是唯一可以作爲(正常)參數傳遞的操作數。
C++只有一個三元運算符(?:
),並且不能重載該運算符,因此不存在可以將運算符重載爲成員函數並使其(有意)可以接收多個參數的情況。
`value`將來自`myclass_instance + otherclass_instance`哪裏? – delnan 2011-01-26 18:11:37
你想表達什麼?你想寫什麼代碼? – 2011-01-26 18:28:01