首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 中 const 重載函數的調用規則詳解

     編輯:程式設計綜合問答

問題背景

在 C++ 中,當類別同時提供 const 與非 const 版本的重載成員函數時,編譯器會根據物件的 const 屬性自動選擇合適的版本。這是一個核心的語言特性,正確理解它對於編寫高品質的 C++ 程式碼至關重要。

核心規則

  • const 物件(或 const 指標/引用):只能調用 const 成員函數。若嘗試調用非 const 版本,編譯器將報錯。
  • 非 const 物件(或非 const 指標/引用):優先調用非 const 版本;若僅有 const 版本,則可調用 const 版本(隱式轉換)。

程式碼示範

class Demo {
public:
    void func() { /* 非 const 版本 */ }
    void func() const { /* const 版本 */ }
};

int main() {
    Demo obj;           // 非 const 物件
    const Demo cobj;    // const 物件

    obj.func();   // 呼叫非 const 版本
    cobj.func();  // 呼叫 const 版本
}

設計建議

針對不修改物件狀態的查詢型操作,務必提供 const 版本;修改狀態的操作則提供非 const 版本。這樣既能保證 const 正確性,又能讓編譯器自動進行最佳匹配。

常見誤區

切勿試圖在 const 成員函數中修改成員變數(除非該成員被宣告為 mutable),否則會導致編譯錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved