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

            孔雀開發(fā)小屋

            專注并致力于手機(jī)客戶端開發(fā)
            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統(tǒng)計(jì)

            • 隨筆 - 103
            • 文章 - 0
            • 評論 - 251
            • 引用 - 0

            常用鏈接

            留言簿(38)

            隨筆分類

            隨筆檔案

            關(guān)注的博客

            朋友的博客

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

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

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

            3. 對單個(gè)參數(shù)的構(gòu)造函數(shù)使用explicit關(guān)鍵字。
               如果C++的構(gòu)造函數(shù)只有一個(gè)參數(shù),那么就會(huì)有一個(gè)對應(yīng)的“隱式轉(zhuǎn)換”。即:將該構(gòu)造函數(shù)中參數(shù)的數(shù)據(jù)類型對應(yīng)的數(shù)據(jù)轉(zhuǎn)換為該類的對象。這么說有點(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è)類對象的時(shí)候使用拷貝構(gòu)造函數(shù)。大部分類并不需要可拷貝, 也不需要一個(gè)拷貝構(gòu)造函數(shù)或重載賦值運(yùn)算符。
             
            // 禁止使用拷貝構(gòu)造函數(shù)和 operator= 賦值操作的宏
            // 應(yīng)該類的 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 孔雀 閱讀(2229) 評論(1)  編輯 收藏 引用 所屬分類: Think&Style

            評論

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

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

            如果不能使用異常,那么不要使用C++。C++的構(gòu)造函數(shù)和析構(gòu)函數(shù)帶來的異常安全的意義在沒有異常的情況下淪為了不值錢的語法糖了,僅僅是防止你忘記調(diào)用某個(gè)函數(shù)罷了。
              回復(fù)  更多評論    
            日本人妻丰满熟妇久久久久久| 久久99精品久久久久久hb无码| 99久久99久久精品国产| 99久久国产综合精品成人影院| 99久久精品免费看国产一区二区三区| 精品久久久久久无码中文野结衣 | 污污内射久久一区二区欧美日韩 | 99久久国产主播综合精品| 久久天天躁狠狠躁夜夜2020 | 久久天天躁狠狠躁夜夜2020 | 国产精品九九久久免费视频 | 伊人久久大香线焦AV综合影院| 东京热TOKYO综合久久精品| 欧美久久亚洲精品| 久久免费美女视频| 99久久国产宗和精品1上映| 麻豆精品久久精品色综合| 奇米影视7777久久精品| 久久影院亚洲一区| 青草影院天堂男人久久| 综合人妻久久一区二区精品| 亚洲国产精久久久久久久| 久久久久亚洲AV无码永不| 中文字幕久久亚洲一区| 久久国产精品二国产精品| 国内精品久久久久久99蜜桃| 久久久久久久精品妇女99| 久久精品国产99国产精品| 久久精品国产亚洲网站| 久久99久久99精品免视看动漫| 久久九九兔免费精品6| 一级做a爰片久久毛片看看 | 午夜精品久久影院蜜桃| 久久久久亚洲AV无码专区网站| 亚洲国产成人久久综合碰碰动漫3d| 久久久久亚洲av无码专区导航| 久久99热这里只有精品国产| 久久精品国产亚洲αv忘忧草| 思思久久99热免费精品6| 亚洲国产精品综合久久网络| 武侠古典久久婷婷狼人伊人|