C++函數返回值為const
令函數返回值為const,往往可以降低因用戶錯誤而造成的意外,而又不至於放棄安全性和高效性。
class Rational {...};
class Rational operator* (const Rational &lhs, const Rational &rhs);
Rational a, b, c
(a * b) = c // 在 a*b的成果上調用operator=。這句話會報錯誤。
- 函數返回值為const時候,代表返回的值不能修改,變成了右值即臨時對象。
- 將c賦值給(a*b), 相當於賦值給了右值(臨時對象),編譯器不予許。
- 當類的賦值構造函數時,即 a=b=c, 此時禁止返回為const,因為a=b當做左值才能進行賦值。