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

            孔雀開(kāi)發(fā)小屋

            專(zhuān)注并致力于手機(jī)客戶端開(kāi)發(fā)
            <2010年5月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            統(tǒng)計(jì)

            • 隨筆 - 103
            • 文章 - 0
            • 評(píng)論 - 251
            • 引用 - 0

            常用鏈接

            留言簿(38)

            隨筆分類(lèi)

            隨筆檔案

            關(guān)注的博客

            朋友的博客

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            google C++風(fēng)格指南筆記(二):類(lèi)
            1. 構(gòu)造函數(shù)的職責(zé)
               如果對(duì)象需要進(jìn)行有意義的(non-trival)初始化,考慮使用明確的init()的方法來(lái)進(jìn)行初始化操作。因?yàn)槿绻跇?gòu)造函數(shù)中進(jìn)行有意義的初始化操作,一旦這些操作失敗,對(duì)象將進(jìn)入不確定的狀態(tài)。symbian編程中廣泛使用一種稱(chēng)為“兩階段構(gòu)造法”的方法來(lái)解決這個(gè)問(wèn)題,值得借鑒。

            2. 默認(rèn)構(gòu)造函數(shù)
               如果一個(gè)類(lèi)定義了很多數(shù)據(jù)成員,那么就自己寫(xiě)一個(gè)構(gòu)造函數(shù),因?yàn)槿绻蛔约簩?xiě),編譯器會(huì)產(chǎn)生一個(gè)垃圾的默認(rèn)構(gòu)造函數(shù),這應(yīng)該不是你想要的。
               new 一個(gè)不帶參數(shù)的類(lèi)對(duì)象時(shí), 會(huì)調(diào)用類(lèi)的默認(rèn)構(gòu)造函數(shù). 用 new[] 創(chuàng)建數(shù)組時(shí),默認(rèn)構(gòu)造函數(shù)則總是被調(diào)用。保證對(duì)象的構(gòu)造要有意義。

            3. 對(duì)單個(gè)參數(shù)的構(gòu)造函數(shù)使用explicit關(guān)鍵字。
               如果C++的構(gòu)造函數(shù)只有一個(gè)參數(shù),那么就會(huì)有一個(gè)對(duì)應(yīng)的“隱式轉(zhuǎn)換”。即:將該構(gòu)造函數(shù)中參數(shù)的數(shù)據(jù)類(lèi)型對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換為該類(lèi)的對(duì)象。這么說(shuō)有點(diǎn)繞,舉個(gè)例子就明白了:
            class IntCls
            {
            public:
               IntCls(
            int m);
               
            };

            IntCls ic 
            = 10// Convert 10 to IntCls

            // convert:
            // IntCls tmp = IntCls(10);
            // ic = tmp

            4.拷貝構(gòu)造函數(shù)
              僅在代碼中需要拷貝一個(gè)類(lèi)對(duì)象的時(shí)候使用拷貝構(gòu)造函數(shù)。大部分類(lèi)并不需要可拷貝, 也不需要一個(gè)拷貝構(gòu)造函數(shù)或重載賦值運(yùn)算符。
             
            // 禁止使用拷貝構(gòu)造函數(shù)和 operator= 賦值操作的宏
            // 應(yīng)該類(lèi)的 private: 中使用

            #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
                        TypeName(
            const TypeName&); \
                        
            void operator=(const TypeName&)
            在class Foo 中:
            class Foo {
                
            public:
                    Foo(
            int f);
                    
            ~Foo();

                
            private:
                    DISALLOW_COPY_AND_ASSIGN(Foo);
            };

            5. 結(jié)構(gòu)體
               僅當(dāng)只有數(shù)據(jù)時(shí)使用 struct, 其它一概使用 class.

            posted on 2010-08-11 13:21 孔雀 閱讀(2227) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): Think&Style

            評(píng)論

            # re: google C++風(fēng)格指南筆記(二):類(lèi) 2010-08-13 00:46 陳梓瀚(vczh)

            一旦在構(gòu)造函數(shù)失敗拋出異常,那么外邊永遠(yuǎn)都無(wú)法獲得構(gòu)造好的這個(gè)對(duì)象,因此沒(méi)有“不確定狀態(tài)”可言。

            如果不能使用異常,那么不要使用C++。C++的構(gòu)造函數(shù)和析構(gòu)函數(shù)帶來(lái)的異常安全的意義在沒(méi)有異常的情況下淪為了不值錢(qián)的語(yǔ)法糖了,僅僅是防止你忘記調(diào)用某個(gè)函數(shù)罷了。
            久久99国产精品成人欧美| 国产一区二区精品久久岳| 久久男人Av资源网站无码软件 | 久久久久国产精品| 久久无码一区二区三区少妇| 国产精品久久久久久久久久影院 | 草草久久久无码国产专区| 久久露脸国产精品| 国产情侣久久久久aⅴ免费| 久久伊人五月天论坛| 久久国产精品99精品国产| 人妻精品久久久久中文字幕| 国产美女久久精品香蕉69| 久久人人爽人人爽人人片AV东京热| 成人妇女免费播放久久久| 久久国内免费视频| 狠狠精品久久久无码中文字幕 | 亚洲日本va午夜中文字幕久久| 99久久精品毛片免费播放| 久久综合九色综合网站| 久久精品中文字幕有码| 久久成人国产精品二三区| 久久久无码人妻精品无码| 亚洲中文字幕伊人久久无码 | 亚洲乱码中文字幕久久孕妇黑人| 久久中文精品无码中文字幕 | 久久精品人人做人人爽电影| 国产精品欧美亚洲韩国日本久久| 久久久久人妻一区二区三区vr| 久久笫一福利免费导航| 国产精品久久久久a影院| 久久露脸国产精品| 亚洲婷婷国产精品电影人久久| 久久露脸国产精品| 欧美亚洲国产精品久久| 久久久久波多野结衣高潮| 久久99这里只有精品国产| 国产精品久久久久a影院| 777午夜精品久久av蜜臀| 亚洲精品午夜国产VA久久成人| 亚洲精品乱码久久久久久蜜桃图片|