C++筆記(5)const和mutable 關鍵字

來源:互聯網
上載者:User
C++筆記(5)const關鍵字

1、const   A   fun2(   );   const   A*   fun3(   );
返回const變數

2、類成員函數中const的使用    
  一般放在函數體後,形如:void   fun()   const;     
任何不會修改資料成員的函數都因該聲明為const類型。如果在編寫const成員函數時,不慎修改了資料成員,或者調用了其他非const成員函數,編譯器將報錯,這大大提高了程式的健壯性。

3、const變數

4、const對象
只能訪問const成員變數和const成員函數

據說有這種面試題:
class A
{
        public :
        char get_m() const
        {
                 return m;
        }
        private:
        char m;
}
請在函數get_m中改變m的值。

我想,對於這種流氓問題,只好使用流氓的做法:
        char get_m() const
        {
                char * p = (char *) &m;
                *p = 'C';
                 return m;
        }
呵呵,可以做到,因為類內const函數是通過“把類內成員都作為const”來實現的。
不過這是我這種“流氓程式員”的做法。

實際上,經過同事的教導,應該使用mutable修飾符:
mutable char m;
這樣即使在類的const函數內,m的類型也是可以改變的了。

另外,如果想不要這份工作,也可以這麼寫:
#define const
哈哈,這樣面試官就不敢要你啦。:D

參考:
http://dulao5.blog.hexun.com/6687190_d.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.