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

C++ 成員函數末尾 const 含義詳解

     編輯:程式設計疑難解答

語法形式

const Stock& compare(const Stock& s) const;
//                              ↑ 這裡的 const

核心含義

該成員函數承諾不會修改調用對象的任何非靜態數據成員。

  • 編譯器會檢查函數體內是否有賦值操作針對非 mutable 成員,若有則報錯。
  • 允許讀取成員、調用其他 const 成員函數、修改 mutable 修飾的成員。

代碼示例

class A {
private:
    int x;
    mutable int cache; // 可在 const 函數中修改
public:
    void foo() const {
        // x = 123;     // 錯誤:不能修改非 mutable 成員
        cache = 456;   // 正確:mutable 允許修改
    }
    void bar() {
        x = 789;       // 正常:非 const 函數無限制
    }
};

實戰價值

  1. 語義契約:向調用者明確傳達「只讀操作」,提升代碼可讀性與安全性。
  2. 重載區分:可構成 const 與非 const 重載,如 operator[] 返回引用與常量引用。
  3. 調用權限:const 對象只能調用 const 成員函數,非 const 對象兩者皆可調用。

養成「該加 const 就加 const」的習慣,是 C++ 專業開發者的標誌之一。

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