網頁

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 ...

沒有留言:

張貼留言

0.留言請選擇註冊帳號, Google 或 OpenID 均可
1.歡迎留言交流,但不歡迎垃圾留言及廣告留言
2.文章相關問題歡迎提出,請減少情緒性留言
3.非文章相關內容,請到 G+ 社群 FB 社團提出
4.問作業之留言會被直接刪除
5.莫忘網路禮節
6.可使用部份HTML標記,如 <b> 、 <i> 、 <a>
7.站長保留刪除留言的權力