首頁 > 後端開發 > C++ > 為什麼將 Const 物件傳遞給非常量成員函數會導致 C 中的限定符取消資格錯誤?

為什麼將 Const 物件傳遞給非常量成員函數會導致 C 中的限定符取消資格錯誤?

Patricia Arquette
發布: 2024-12-08 04:27:09
原創
842 人瀏覽過

Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C  ?

將const 物件作為'this' 參數傳遞:限定符不合格錯誤

在C 中,將const 物件作為'this'參數傳遞給成員函數可能會導致「將'const xxx'作為成員函數的'this'參數傳遞會丟棄限定符」錯誤。發生這種情況是因為編譯器考慮到非 const 成員函數可能會修改對象,而 const 物件是禁止這樣做的。

問題分析

提供的程式碼中,集合中的物件儲存為 const StudentT。在迴圈內存取成員函數 getId() 和 getName() 時,編譯器會偵測到此問題,因為物件是 const 且成員函數未標記為 const。

要解決該錯誤,必須使用getId() 和getName() 函數const:

int getId() const {
    return id;
}

string getName() const {
    return name;
}
登入後複製

這允許在const物件上呼叫函數而不違反const 規則。

附加說明

  • 類似地,運算子
inline bool operator< (const StudentT &amp; s1, const StudentT &amp; s2) {
    return s1.getId() < s2.getId();
}
登入後複製
將引用(而不是物件)傳遞給成員函數對於效能和程式碼正確性來說是更好的選擇。

以上是為什麼將 Const 物件傳遞給非常量成員函數會導致 C 中的限定符取消資格錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板