[英]Do I always have to declare any method that doesn't affect instance state, as const?
我有一個使用以下方法的類:
int getLength() {
return length;
}
(該類稱為String
,我將在實踐中對其進行定義)。
當我嘗試進行編譯時,出現了關於調用此方法的代碼行的錯誤:
passing 'const String' as 'this' argument of int String::getLength() discards qualifiers.
在該站點上進行的搜索使我意識到我需要在方法聲明中添加const
。 它解決了問題。
我的問題:
我是否必須始終將任何不影響實例狀態的方法聲明為const
? 如果不這樣做,我會得到編譯時錯誤嗎? 似乎很奇怪。
如果我不必總是這樣做,那么當我必須將方法聲明為const
時會發生什么情況呢?
編譯器錯誤不是由方法引起的,而是由調用它的實例的類型引起的。 您嘗試對const對象( const String
)或對const對象的引用( const String&
)調用非const方法。 編譯器理應拒絕這種情況。
而且,是的,你應該慶祝其在邏輯上的所有方法const
的const
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.