C++ 速查手冊

9.12 - mutable 成員

類別中的 const 的成員函數不能修改資料變數的值,但可修改宣告為 mutable 的成員變數,舉例如下

#include <iostream>
  
class Demo {
public:
    Demo(int pa) {
        a = pa;
    }
    
    int do_something() const {
        ++a;
        
        return a;
    }
    
private:
    mutable int a;
};

int main(void) {
    Demo d(24);
    std::cout << d.do_something() << std::endl;
    std::cout << d.do_something() << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   https://kaiching.org/
   檔名:u0912.cpp
   功能:示範 C++ 的類別
   作者:張凱慶*/

我們在資料成員 a 的部份加進 mutable 的宣告

mutable int a;

這樣 constdo_something() 就可以修改 a 的值

int do_something() const {
    ++a;
    
    return a;
}

編譯執行,結果如下

$ g++ u0912.cpp
$ ./a.out
25
26
$

上一頁 9.11 - const 成員函數
回 C++ 速查手冊首頁
下一頁 9.13 - 巢狀類別