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

            Gordon.Ma

            近山則志高,臨水而聰慧
            隨筆 - 3, 文章 - 0, 評論 - 1, 引用 - 0
            數據加載中……

            C++關鍵字

            面試過程中,一些面試官對C++一些特殊關鍵字很關注;
            整理了一些比較有說頭的關鍵字
            • explicit
            用來聲明構造函數,被聲明的構造函數為顯示構造函數,不能在隱式轉換中使用。
            C++中一個參數的構造函數或除第一個參數外均有默認值的多參構造函數,有兩個作用:1、構造對象;2、默認且隱式的類型轉換操作符。
             1 class foo
             2 {
             3 public:
             4     explicit foo( int a )
             5         : _member( a )
             6     {}
             7 
             8     int _member;
             9 };
            10 
            11 int bar( const foo & f )
            12 {
            13     return f._member;
            14 }
            15 
            16 bar( 1 ); // 失敗, explicit禁止int到foo的隱式(implicit)類型轉換.
            17 
            18 bar( foo( 1 ) ); // 正確, 顯式調用explicit構造函數.
            19 
            20 bar( static_cast<foo>1 ) );  // 正確, 通過static_cast調用explicit構造函數.
            21 
            22 bar( foo( 1.0 ) );  // 正確, 顯式調用explicit構造函數, 參數自動從浮點轉換成整型.

            • mutable
            用來聲明一個成員變量,被mutable聲明的成員變量,可以在被const修飾的成員函數中修改。
            mutable不可與const、static同時使用。
             1 class foo
             2 {
             3 public:
             4     foo()
             5         : _member(0)
             6     {}
             7 
             8     void ExChange( int a ) const
             9     {
            10         _member = a;
            11     }
            12 
            13     mutable int _member;
            14 }

            • volatile
            用以聲明一個變量,被volatile聲明的變量意味著有可能被某些編譯器未知的因素更改,因此編譯器不會對其做任何優化操作。
            從而可以提供對特殊地址的穩定訪問,多用于嵌入式編程中。
             1 void foo()
             2 {
             3     //volatile int nData = 1;
             4     int nData = 1;
             5 
             6     int nData_b = nData;
             7     printf("nData = %d\n",nData_b);
             8 
             9     // c++嵌入asm參見:http://asm.sourceforge.net/articles/linasm.html
            10     asm("movl $2, -4(%ebp)\n\r"); // 修改變量地址內容
            11 
            12     int nData_a = nData;
            13     printf("nData = %d\n",nData_a);
            14 }
            15 
            16 使用volatile輸出:
            17 nData = 1
            18 nData = 2
            19 
            20 不使用volatile輸出為:
            21 nData = 1
            22 nData = 1

            posted on 2012-05-22 15:16 Gordooooon 閱讀(1440) 評論(1)  編輯 收藏 引用 所屬分類: C/C++

            評論

            # re: C++關鍵字  回復  更多評論   

            不錯,最后一個沒注意過,多多更新。。。
            2012-05-22 19:40 | 鐘謝偉
            色天使久久综合网天天| 欧美久久综合九色综合| 久久亚洲精品成人AV| 色8久久人人97超碰香蕉987| 国内精品久久久久影院日本| 精品无码久久久久久国产| 久久人人青草97香蕉| 久久A级毛片免费观看| 狠狠人妻久久久久久综合| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲成色www久久网站夜月| 久久久亚洲欧洲日产国码aⅴ| 精品综合久久久久久88小说| 久久久久国产精品人妻| 久久国产午夜精品一区二区三区| 欧美伊人久久大香线蕉综合| 国产精品欧美久久久久天天影视| 亚洲中文字幕无码久久2020| 久久精品成人免费国产片小草| 久久久国产精品亚洲一区| 亚洲精品tv久久久久| 国产精品VIDEOSSEX久久发布| 色婷婷久久综合中文久久蜜桃av| 久久久久久久久久久免费精品| 77777亚洲午夜久久多喷| 中文字幕亚洲综合久久菠萝蜜| 91久久精品国产免费直播| 亚洲狠狠婷婷综合久久久久 | 91精品国产91久久综合| 99久久精品免费看国产一区二区三区| 国产成人无码精品久久久免费| A狠狠久久蜜臀婷色中文网| 日韩人妻无码精品久久免费一| 一极黄色视频久久网站| 久久婷婷色综合一区二区| 久久精品国产99久久丝袜| 国产午夜精品久久久久九九| 伊人久久大香线蕉精品| 国产精品美女久久久久av爽| 狠狠色丁香久久综合五月| 久久99热国产这有精品|