」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼將 Const 物件傳遞給非常量成員函數會導致 C++ 中的限定符取消資格錯誤?

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

發佈於2025-01-14
瀏覽:806

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

將常數物件作為“this”參數傳遞:限定符取消資格錯誤

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

問題分析

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

Solution

要解決該錯誤,必須將 getId() 和 getName() 函數設為 const:

int getId() const {
    return id;
}

string getName() const {
    return name;
}

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

附加說明

  • 附加說明
inline bool operator同樣,運算子
  • inline bool 運算子

    Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C  ?
將引用(而不是物件)傳遞給成員函數對於效能和程式碼正確性來說是更好的選擇。

  • 最新教學 更多>

    免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

    Copyright© 2022 湘ICP备2022001581号-3