C++ 速查手冊 V1.00 - 單元 9.12 - mutable 成員




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


001 #include <iostream>
002
003 class Demo {
004 public:
005    Demo(int pa) {
006       a = pa;
007    }
008
009    int do_something() const {
010       ++a;
011
012       return a;
013    }
014
015 private:
016    mutable int a;
017 };
018
019 int main(void) {
020    Demo d(24);
021    std::cout << d.do_something()
022              << std::endl;
023    std::cout << d.do_something()
024              << std::endl;
025
026    return 0;
027 }
028  
029 /* Kaiching Chang 
030    u0912.cpp
031    2014-02 */

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


016 mutable int a;

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


009 int do_something() const {
010    ++a;
011
012    return a;
013 }

編譯執行,結果如下


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

continue ...

沒有留言: