2015-05-06 29 views
0
string& operator+= (const string& str); 

當我們看看函數原型時,我們假設傳遞給函數的字符串不會被改變,對吧?像「string&operator + =(const string&str)」這樣的函數參數類型不是混淆嗎? (引用常量)

然而,審時度勢:

string str("Example"); 
str += str; 

字符串 '海峽' 改變了,其實。 這種情況不是很奇怪嗎?

將原型更改爲?

string& operator+= (string& str); 

我已經搜索了很多這樣的來源和例子,但對大多數人來說這似乎是正常的。有沒有人問這個問題,或者可能是我沒有找到的情況(對不起,如果是我的問題,很難找到非母語的適當關鍵字)

回答

0

const不說一個函數參數根本無法修改。它只是說它不能通過參數修改。如果你將一個特定的對象作爲一個const和一個非const的參數傳遞,那麼如果它發生變化,你幾乎不會感到驚訝!另一方面,如果你將對象聲明爲const,那麼你可以保證(或多或少)它根本不會被改變,因爲試圖將它作爲非const參數傳遞將會失敗。

+0

謝謝!現在有道理。 –

相關問題