簡體   English   中英

我是否總是必須將任何不影響實例狀態的方法聲明為const?

[英]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方法。 編譯器理應拒絕這種情況。

而且,是的,你應該慶祝其在邏輯上的所有方法constconst

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM