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

            Robin Chow's C++ Blog

             

            [導入]Exception C++ 之 11

            編碼標準:
            1. 封裝和隔離。
            2. 在聲明一個類的時候,應避免暴露出其私有成員。
            3. 應該使用一個形如“struct Xxxxlmpl *pimpl_”的不透明的指針來存儲私有成員(包括狀態(tài)變量和成員函數)。
            使用pimpl(編譯器防火墻)可以大大降低代碼之間的相互依賴性,對于pimpl_需要注意:
            1. pimpl_中存儲的是私有變量和私有成員函數。
            2. 一般需要一個反向指針(習慣稱為self_)來調用可見類的函數。
            3. 即使虛擬函數是私有的,也不能把虛擬成員函數隱藏在pimpl類中。

            文章來源:http://my.donews.com/robinchow/2007/01/13/qwtfsgyamrxaxddpwhxeyatxgntnrlthhnna/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(82) | 評論 (0)編輯 收藏

            [導入]Exception C++ 之 12

            Koenig Lookup:
            如果你給函數提供一個 class 類型的實參,那么在名稱搜索時,編譯器將認為包含實參類型的命名空間中的同名函數的可選函數。
            接口原則:
            對于一個類X,所有的函數,包括自由函數,只要同時滿足
            • “提到”X,并且
            • 與X“同期提供”
            就是X的邏輯組成部分,因為它們組成了X的接口。

            接口原則與 Koenig lookup 的行為相同,因為 Koenig lookup 的行為正是建立在接口原則的基礎上的。
            小結:
            1. 接口原則:對于 class X,所有的函數,包括自由函數,只要同時滿足(a)“提及”X,(b)與 X“同期提供”,那么它就是X的邏輯組成部分,因為它們是 X 的接口的一部分。
            2. 因此,成員和非成員函數都是一個 class 的邏輯組成部分。只不過成員函數比非成員函數有更強的關聯(lián)關系。
            3. 在接口原則中,對“同期提供”的最有用的解釋是“出現(xiàn)在相同的頭文件和/或命名空間中”。如果函數與 class 出現(xiàn)在相同的頭文件中,在依賴性分析時,它是此 class 的組成部分。如果函數與類出現(xiàn)在相同的命名空間中,在對象引用和名稱搜索時,它是此 class 的組成部分。



            文章來源:http://my.donews.com/robinchow/2007/01/14/tlcchrdcrthuzvbqdhrczbijwughfpwzbybi/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(74) | 評論 (0)編輯 收藏

            [導入]Exception C++ 之 13

            C++ 中的內存區(qū)域分為6塊:
            1. 常量數據區(qū):存儲字符串等在編譯期間就能確定的值。類對象不能存在與這個區(qū)域中。在程序的整個生存周期內,區(qū)域中的數據都是可用的。區(qū)域內的所有數據都是只讀的,任何企圖修改本區(qū)域數據的行為都會造成無法預料的后果。
            2. 棧區(qū):存儲自動變量。棧區(qū)中,內存一旦被分配,對象就立即被構造好了;對象一旦被銷毀,分配的內存也立即被收回。
            3. 自由存儲區(qū):是 C++ 的兩個動態(tài)內存區(qū)域之一,使用 new 和 delete 來予以分配和釋放。
            4. 堆區(qū):是另一個動態(tài)存儲區(qū)域,使用 malloc、free 以及一些相關變量來進行分配和回收。
            5. 全局/靜態(tài)區(qū):在程序啟動時才被分配,而且可能直到程序開始執(zhí)行的時候才被初始化。比如,函數中的靜態(tài)變量就是在程序第一次執(zhí)行到定義該變量的代碼時才被初始化的。對那些跨越了編譯單元的全局變量進行初始化操作的順序是沒有被明確定義的,因而需要特別注意管理全局對象(包括靜態(tài)類對象)之間的依賴關系。
            另外注意,C++ 標準對于堆和自由存儲區(qū)是否有聯(lián)系沒有予以詳細說明,不同編譯器可能有不同的實現(xiàn)。

            文章來源:http://my.donews.com/robinchow/2007/01/14/kvdartgbqpsrlrmsxjgnplhdrqqyqtkapnag/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(104) | 評論 (0)編輯 收藏

            [導入]Exception C++ 之 14

            關于內存管理:
            1. new 和 delete 必須配套提供,即提供了 new 就必須提供相應的 delete,反之亦然。
            2. 如果基類的析構函數聲明為 virtual,則對基類指針調用 delete 時總是調用派生類的析構函數,因而也總是調用派生類的 delete。
            3. 絕對不要以多態(tài)方式處理數組(見《More Effective C++》條款3)。
            4. new 和 delete 總是靜態(tài)的,即使它們不被顯式的聲明為 static。總是把它們聲明為 static 是個很好的習慣,這可以讓所有閱讀代碼的程序員明白無誤的認識到這一點。

            文章來源:http://my.donews.com/robinchow/2007/01/14/cnfqokuxltsdoepsgwhcvonezmrrzircwxsk/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(75) | 評論 (0)編輯 收藏

            [導入]Exception C++ 之 15

            使用 auto_ptr(靈巧指針)的注意事項:
            1. 對于 auto_ptr,拷貝不是對等的。右側的對象不再擁有對象的所有權。
            2. 不再擁有所有權的 auto_ptr 的指針會被置為 NULL,因而對它的解引用會導致錯誤。
            3. 使用 const auto_ptr 可以防止將該靈巧指針賦值給其他靈巧指針。

            文章來源:http://my.donews.com/robinchow/2007/01/14/xzuxgvbkpleammqcmlzlsjhkcqmgfdpddjaj/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(62) | 評論 (0)編輯 收藏

            [導入]Exception C++ 之 16

            • 如果需要的話,請編寫一個私有函數來使拷貝操作和拷貝賦值共享代碼;千萬不要利用“使用顯式的析構函數并且后面跟一個 placement new”的方法來達到“以拷貝構造操作實現(xiàn)拷貝賦值操作”這樣的目的。也就是說,決不要編寫如下的代碼:
              T& T::operator=(const T &other)
              {
                  if(this != &other)
                  {
                     this->~T();               // 有害!
                     new (this) T(other);   // 有害!
                  }
                  return *this;
              }
            • 關于拷貝賦值操作符有兩點需要注意:
              1. 將拷貝賦值操作聲明為“T& T::operator=(const T&)”
              2. 不要返回 const T&,盡管這樣做避免了諸如“(a = b) = c”的用法;這樣做意味著:你無法出于移植性的考慮而將 T 對象放入標準程序庫之容器 -- 因為其需要賦值操作返回一個單純的 T&。

            文章來源:http://my.donews.com/robinchow/2007/01/14/uufhhtovwfvygicxibjufbugcnhamivhcapk/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(60) | 評論 (0)編輯 收藏

            [導入]Exception C++ 之 17

            1. 建議總是使用“SomeType t(u)”的形式,一來是因為只要可以用“SomeType t = u”的地方也同樣可以用它;二來是因為它還有一些其它的有點,比如支持多個參數等。
            2. 關于 const:
              • 如果函數的返回類型不是一個內建(built-in)的類型的話,通常應該將其返回類型也聲明為 const。這樣可以避免該函數的調用者企圖修改臨時對象。
              • 對于傳引用作為實參,可以將其聲明為 const 以防止對其進行修改;如果使用傳值,則沒有必要聲明為 const。
              • 如果一個函數從邏輯上來說是 const 的,則應該將其聲明為 const 函數,即使該函數實際修改了對象的狀態(tài),這時候必須將要修改的值聲明為 mutable。
            3. 關于類型轉換:
              • dynamic_cast:對公有繼承的基類和派生類進行轉換,轉換失敗時返回 NULL。
              • reinterpret_cast:對于互不相同、區(qū)別開來的類型(例如函數指針),盡管它們之間存在著隱式轉換,它們也是互無聯(lián)系的,應該用 reinterpret_cast 進行轉換。




            文章來源:http://my.donews.com/robinchow/2007/01/15/HxCWeJTzfsIHxGSohwbqozDYDPwcLcYtAApF/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(106) | 評論 (0)編輯 收藏

            [導入]C++ 代碼優(yōu)化(英文)

            值得一看:

            C++ Code Optimizations
            文章來源:http://my.donews.com/robinchow/2007/01/15/bimskiqoaxkxvxlvzbfgoxtnrlgtocbpkohu/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(101) | 評論 (0)編輯 收藏

            [導入]不使用第三個數來交換兩個數的值的方法(英文)



            Interchanging 2 variables without the use of a third - Programming/PHP
            文章來源:http://my.donews.com/robinchow/2007/01/15/nbctysjyzmipdsnjkfhkwjgoqubiylxlmael/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(115) | 評論 (0)編輯 收藏

            [導入]Hohoho

            http://www.ianai.net/jokes/WillNotThrow.gif
            文章來源:http://my.donews.com/robinchow/2007/01/15/cglotemjvscvgbjpnasvjzxcgxvqqugtbsiv/

            posted @ 2007-10-23 20:51 Robin Chow 閱讀(73) | 評論 (0)編輯 收藏

            僅列出標題
            共9頁: 1 2 3 4 5 6 7 8 9 

            導航

            統(tǒng)計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲精品国产自在久久| 亚洲狠狠婷婷综合久久久久| 麻豆精品久久精品色综合| 久久精品国产亚洲AV嫖农村妇女| .精品久久久麻豆国产精品| yellow中文字幕久久网| 免费精品久久久久久中文字幕| 综合人妻久久一区二区精品| 久久精品国产一区| 狠狠色丁香久久婷婷综合蜜芽五月 | 久久精品夜夜夜夜夜久久| 国内精品久久久久影院日本| 久久精品一区二区影院| 久久精品人成免费| 久久综合精品国产一区二区三区| 久久久久亚洲AV无码专区体验| 2021国产成人精品久久| 少妇精品久久久一区二区三区| 国产精品永久久久久久久久久| 无码人妻久久久一区二区三区| 精品久久久久久无码免费| 久久中文骚妇内射| 久久久久久亚洲精品影院| 国内精品久久久久久久涩爱| 久久久老熟女一区二区三区| 精品乱码久久久久久夜夜嗨| 国产精品久久久久aaaa| 久久久噜噜噜久久熟女AA片 | 久久久无码精品午夜| 久久婷婷五月综合97色| 久久无码国产专区精品| 久久久久国色AV免费看图片| 久久精品国产精品青草app| 久久66热人妻偷产精品9| 亚洲色婷婷综合久久| 久久狠狠爱亚洲综合影院| 精品久久久一二三区| 精品久久久久久久国产潘金莲 | 中文字幕无码久久久| 久久久久久国产精品美女| 久久国产综合精品五月天|