我有以下方法的類:我是否總是必須聲明任何不影響實例狀態的方法,因爲const?
int getLength() {
return length;
}
(類被稱爲String
,我定義它的做法)。
當我試圖編譯,我得到了關於一行代碼調用此方法的錯誤:
passing 'const String' as 'this' argument of int String::getLength() discards qualifiers.
在這個網站一搜索讓我意識到我需要在方法聲明中添加const
。它解決了這個問題。
我的問題:
總是我必須聲明,不影響實例的狀態的任何方法,如const
?如果我沒有,我得到一個編譯時錯誤?看起來很奇怪。
如果我不必總是這樣做,那麼比我需要將方法聲明爲const
時的情況是什麼?
如果您發佈錯誤消息,最好也發佈錯誤消息所引用的源代碼行(+上下文)。如您已經說過的,錯誤不會發生,因爲您*聲明*該方法爲非常量,但因爲*在非const對象/引用上使用它*。 – misberner 2014-10-02 23:50:52