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 函數無限制
}
};
const 與非 const 重載,如 operator[] 返回引用與常量引用。const 對象只能調用 const 成員函數,非 const 對象兩者皆可調用。養成「該加 const 就加 const」的習慣,是 C++ 專業開發者的標誌之一。