$ g++ main.cpp --std=c++11
main.cpp:10:49: error: ‘Foo Foo::operator*(const Foo&, const Foo&)’ must take either zero or one argument
Foo operator*(const Foo &lhs, const Foo &rhs)
^
main.cpp: In function ‘int main()’:
main.cpp:20:8: error: no match for ‘operator*’ (operand types are ‘Foo’ and ‘Foo’)
(a * b) = c;
你的Code是有問題的,在我這兒.
你的程式碼是範例程式碼吧? 你的重載運算子是錯誤的.格式都寫錯了吧? 重載不應該是如下嗎?
不太懂您的意思.
我記得右邊值也可以是被賦值的.如果函數回傳的右邊值是一個引用呢?
就像下面這段程式碼
不能把「左值」、「右值」簡單理解為出現在等號兩邊的位置。尤其是當一個類別物件出現在等號左邊時,物件賦值實際上是透過呼叫函數
operator=
完成的:(a * b) = c
==>(a*b).operator=(c)