• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-34  評(píng)論-108  文章-0  trackbacks-0
            ??? 存儲(chǔ)描述符mutable用來特別說明某個(gè)類的成員變量需要以一種允許更新的方式存儲(chǔ)--即使它是某個(gè)const對(duì)象的成員。換言之,mutable意味著“不可能是const”。
            ??? 舉例如下:
            class Test
            {
            ??public:
            void SetValue(int i) const {m_i=i;}
            private:
            mutable int m_i;
            };
            ??? 上面的代碼在使用的時(shí)候是沒有問題的,但是如果int m_i的定義去掉mutable,則會(huì)出現(xiàn) “error C2166: l 值指定常數(shù)對(duì)象”這樣的錯(cuò)誤提示。
            ??? 可能有朋友說,可以通過const_cast?之類的轉(zhuǎn)換實(shí)現(xiàn),但是這個(gè)運(yùn)算符并不是總能正確的轉(zhuǎn)換的。
            posted on 2007-02-11 08:35 探丫頭 閱讀(1318) 評(píng)論(4)  編輯 收藏 引用 所屬分類: 編程語言——C++

            評(píng)論:
            # re: 存儲(chǔ)描述符mutable[未登錄] 2007-02-11 16:18 | BBSky
            "static_const"應(yīng)該是const_cast  回復(fù)  更多評(píng)論
              
            # re: 存儲(chǔ)描述符mutable 2007-02-11 16:31 | 平凡小草
            @BBSky
            暈,我真是服氣了,怎么犯這樣的錯(cuò)誤,謝謝提醒  回復(fù)  更多評(píng)論
              
            # re: 存儲(chǔ)描述符mutable 2007-02-11 20:10 | anonymous
            以通過const_cast 之類的轉(zhuǎn)換實(shí)現(xiàn),但是這個(gè)運(yùn)算符并不是總能正確的轉(zhuǎn)換的

            首先,你這個(gè)結(jié)論是錯(cuò)誤的。其次,const_cast 不應(yīng)該用于這種情況。實(shí)際上一般就不應(yīng)該使用const_cast。mutable的目的也不是用在這種情況下。
            以下摘自:
            http://blog.chinaunix.net/u/23408/showart_191168.html

            *** "const" 修飾成員函數(shù)

            “const”還可以用來修飾成員函數(shù)以表明它不會(huì)破壞對(duì)象的邏輯不變性。

            **** 物理不變與邏輯不變

            邏輯不變(Logical Constness)指的是對(duì)象的呈現(xiàn)給用戶的狀態(tài)不變,但它的成員變量是否變化則不一定。與邏輯不變相對(duì)應(yīng)的還有物理不變(Physical Constness)。所謂物理不 變指的是對(duì)象的任何成員變量都不作任何改動(dòng)。有時(shí)兩者是一致的,但有很多時(shí)候兩者并不一致。例如:假設(shè)有如下多線程環(huán)境下的set類, 它的成員函數(shù)getData()獲取指定鍵值的元素。

            *** 關(guān)鍵字“mutable”

            上一節(jié)講到const成員函數(shù)應(yīng)當(dāng)保持對(duì)象邏輯上不變。但是一個(gè)成員函數(shù)被定義成const成員 后,編譯器禁止它修改對(duì)象的任何屬性。如果成員函數(shù)確實(shí)需要在不破壞對(duì)象邏輯不變性的 前提下修改某一屬性就需要借助關(guān)鍵字“mutable”了。

            關(guān)鍵字“mutable”表示被修飾者在任何情況下都不為常量。上例中MtSet把_mutex_定義成 mutable變量。不論MtSet的對(duì)象是否為常量,_mutex_都是一個(gè)“變”量。  回復(fù)  更多評(píng)論
              
            # re: 存儲(chǔ)描述符mutable 2007-02-14 11:21 | 平凡小草
            @anonymous
            謝謝這么耐心的指導(dǎo),以后多向你學(xué)習(xí)  回復(fù)  更多評(píng)論
              
            99久久国产精品免费一区二区| 一级做a爰片久久毛片看看| 亚洲va久久久噜噜噜久久男同| 久久久久se色偷偷亚洲精品av| 久久天天躁狠狠躁夜夜avapp| 国产亚洲婷婷香蕉久久精品| 久久久久人妻精品一区三寸蜜桃| 久久国语露脸国产精品电影| 国产精品99久久久久久人| 日本久久久久久久久久| 国产精品久久久久久久久免费| 久久九九久精品国产| 亚洲精品蜜桃久久久久久| 精品国产婷婷久久久| 久久久国产乱子伦精品作者| 日本加勒比久久精品| 久久噜噜电影你懂的| 亚洲国产精品无码久久久不卡| 久久精品无码一区二区三区日韩| 7777久久亚洲中文字幕| 精品一二三区久久aaa片| 久久久久久久亚洲精品| 亚洲国产精品人久久| 久久综合给久久狠狠97色| 亚洲欧洲精品成人久久奇米网| 国产精品无码久久久久| 97久久香蕉国产线看观看| 久久精品无码专区免费青青| 久久中文字幕人妻熟av女| 少妇被又大又粗又爽毛片久久黑人| 日韩精品久久久久久| 青青青伊人色综合久久| 丁香狠狠色婷婷久久综合| avtt天堂网久久精品| 久久精品国产精品青草| 久久99热狠狠色精品一区| 亚洲国产成人久久综合一| 91久久精品视频| 久久综合久久性久99毛片| 综合久久给合久久狠狠狠97色| 亚洲国产视频久久|