1 2 3 4 5 6 |
|
我是在看一本书上看到的,返回类型是const的,随后百度看了下,发现大家博客写的大多也是返回const,我有点想不通,为何?去掉const又何妨呢?
PHP中文网2017-04-17 15:24:22
類別作者這樣寫是想強調傳回的結果僅作為值來使用,而不允許將結果作為物件進行修改操作。去掉const
就不再有這個限制,例如可以寫cout << (a++).modify()
而不會被編譯器擋住。
PHPz2017-04-17 15:24:22
繼C++11:
內建後增表達式是prvalue。標準規定非類非數組的prvalue不會是const/volatile修飾的。 int operator++(int);在被呼叫時是prvalue,給這個回傳值型別加const是多餘(書上可能在亂寫)。一般說來,操作符重載要保持與內建版本的操作符語意相似,所以後增為prvalue就行。
阻止prvalue呼叫非const成員函式請用ref-qualifier,例 auto modify() &;
而const修飾的prvalue不會匹配到非const的右值引用,例如阻止移動語義,而這在多數情況下只會帶來額外的運行時開銷。傳回const的值已經過時了。