C++以const 作為返回值類型的意義


const rational operator*(const rational& lhs, const rational& rhs);

很多程序員第一眼看到它會納悶:為什么operator*的返回結果是一個const對象?因為如果不是這樣,用戶就可以做下面這樣的壞事:

rational a, b, c;

...

(a * b) = c;       // 對a*b的結果賦值

我不知道為什么有些程序員會想到對兩個數的運算結果直接賦值,但我卻知道:如果a,b和c是固定類型,這樣做顯然是不合法的。

一個好的用戶自定義類型的特征是,它會避免那種沒道理的與固定類型不兼容的行為。對我來說,對兩個數的運算結果賦值是非常沒道理的。

聲明operator*的返回值為const可以防止這種情況,所以這樣做才是正確的。

 

基本上一般的operator=運算符函數都會以const & 作為返回值,這樣是為了維護以上的理由。(達到同普通運算符的單向值的傳遞效果)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM