青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Exceptional C++ 讀書筆記1

絕對不要對無效的迭代器執行解引用(dereference)操作

用于不要將異常安全性放在事后考慮。異常安全性會影響到類的設計。它永遠都不會“只是一個實現細節”。

在傳遞對象參數時,選擇const&方式而不是傳值方式。

對于程序運行中不會改變的值,應該預先計算并保存起來備用,而不是重復地創建對象,這是沒有必要的。

通常,為了保持一致性,應該使用前置遞增來實現后置遞增,否則,當其他用戶在使用你的類時,可能會得到奇怪結果。

優先選擇使用前置遞增。只有在需要初始值時,才使用后置遞增。

在進行隱式類型轉換時,要注意在轉換過程中創建的 臨時對象。要避免這個問題,一個好辦法就是盡可能地通過顯式的方式來構造對象,并避免編寫類型轉換運算符。

記住對象的生存期。永遠,永遠,永遠都不要返回指向局部對象的指針或引用;它們沒有任何用處,因為主調代碼無法跟蹤它們的有效性,但卻可能會試圖這么做。

盡可能地重用代碼——尤其是標準庫中的代碼——而不是自己去編寫代碼,這樣更快、更容易,也更安全。

如果在函數中不打算處理所拋出的異常,那么應該將異常轉發給能夠進行處理的上層調用者。

在編寫代碼時應該始終遵循:即使在出現異常時,資源仍然能夠被正確地釋放,并且數據也總是處于一致的狀態。

遵循標準的異常安全規則:永遠不要在析構函數、重載運算符函數operator delete()或者operator delete[]()中拋出異常; 在編寫每個析構函數和內存釋放函數時,要假設存在著“throw()”這樣的異常規范。

遵循標準的異常安全性規則:在每個函數中,要將所有可能會拋出異常的代碼單獨放在一起,并且對這些代碼進行安全處理。然后,當你確認這些代碼執行的工作都已經成功地完成時,才可以使用不會拋出異常的操作來修改程序的狀態。

永遠都不要到最后才實現異常安全性。異常安全性會對類的設計產生影響。它永遠都不會“只是一個實現細節”。

優先考慮實現內聚。要努力使每段代碼——每個模塊、每個類、每個函數——都只有單一的,并且是明確定義的功能。

“異常不安全”總是與“拙劣的設計”結伴的。如果程序的設計邏輯清晰,那么即使有一段代碼不是異常安全的,一般來說也不會有太大問題,并且可以很簡單地進行修正。但如果有一段代碼由于設計問題而不能被編寫成異常安全的,我們通常都會認為這個設計時拙劣的。下面是兩個拙劣設計的示例。
示例1:如果在一個函數中需要實現兩個不同的功能,那么這個函數很難被編寫成異常安全的。
示例2:如果在拷貝賦值運算符函數中必須對自我賦值進行檢測,那么這個函數也可能不是完全異常安全的

遵循標準的異常安全性規則:以“獲得資源也就意味著初始化”這種模式來分離資源的所有權和資源的管理權。

在進行設計中,要始終牢記重用性。

優先采用“ a op=b;”這種寫法,而不是"a = a op b;"(這里的op表示某個運算符)。這種寫法更為清晰,效率也高。

如果定義了某個運算符(例如,operator+),那么通常還應該同時定義與這個運算符相對應的賦值運算符(例如,operator+=)。并且用后者來實現前者。而且,還應該維護op和op=之間的自然關系。

在C++標準中規定:運算符=,(),[]和->必須被定義為成員函數,而在類中定義的new,new [],delete和delete[]等運算符函數必須是靜態成員函數。對于其他的運算符函數:
     如果運算符函數是用于流I/O的opeator>>或者operator<<,或者如果運算符函數需要對其左操作數進行類型轉換,或者運算符函數可以通過類的公有接口來實現,那么將這個函數定義為非成員函數(在前兩種情況中,如果需要的話也可以被定義為友元函數);如果運算符函數需要實現虛函數的行為,那么增加一個虛函數來提供虛函數的行為,并用這個虛成員函數來實現運算符函數否則將預算富函數定義為成員函數。

在函數opeator>>和operator<<中應該始終返回對流對象的引用。

將基類的析構函數定義為虛函數(除非你能保證,永遠都不會有人通過指向基類的指針來刪除派生類的對象)。

如果在派生類中定義的函數與基類中的函數有相同的名字,并且你不想隱藏基類中函數,那么應通過using聲明語句將基類的這個函數引入到派生類的作用域中。

永遠不要改變被覆蓋的基類函數中的默認參數值。

除了對真正的Liskov IS-A和WORKS-LIKE-A關系進行建模之外,永遠都不要使用共有繼承。所有被覆蓋的成員函數不能超過實際需求的范圍,同時也不能小于這個范圍。

使用公有繼承的目的是重用代碼(編寫以多態的方式使用基類對象的代碼),而重用(基類中的)代碼并不一定要使用公有繼承。

對“is implemented in terms of”這種關系建模時,應該優先選擇成員關系/包含的方式,而不是私有繼承的方式。只有非用繼承不可時,才應該使用私有繼承——也就是說,當需要訪問保護成員或者需要覆蓋虛函數時,才使用私有繼承。永遠都不要只是為了代碼重用而使用共有繼承。

對于廣泛使用的類,應該優先使用編譯器防火墻這種慣用法(也叫做Pimpl慣用法)來隱藏實現細節,通過一個不透明的指針(指向一個進行了前置聲明但又沒有定義的類)來保存私有成員(包括狀態變量和成員函數),聲明這個指針時可采用“struct XxxxImpl* pImpl;XxxxImpl* pimpl_;”這樣的形式。例如:“class map{ private :struct MapImpl;MapImpl* pimpl_;}”

包含,也可以叫做“聚合”,“分層”,“HAS-A”或者“委托”。優先選擇包含而不是繼承,對于IS-IMPLEMENTED-IN-TERMS-OF這種關系建模時,應該優先考慮使用包含,而不是繼承。

posted on 2014-08-22 11:50 Daywei 閱讀(1616) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

牛人博客

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久九九国产精品| 亚洲免费在线播放| 国产精品国产三级国产aⅴ9色| 欧美一区二区啪啪| 欧美在线电影| 玖玖玖免费嫩草在线影院一区| 久久精品国产亚洲5555| 久久久女女女女999久久| 久久男人av资源网站| 久久一本综合频道| 欧美另类变人与禽xxxxx| 国产精品成人一区二区| 国产一区二区精品| 亚洲黄色片网站| 亚洲午夜精品| 久久婷婷丁香| 最近中文字幕日韩精品| 日韩视频中文| 欧美一区二区三区视频在线| 欧美 日韩 国产一区二区在线视频| 欧美吻胸吃奶大尺度电影| 黄色日韩网站视频| 一本色道精品久久一区二区三区| 午夜精品一区二区三区在线| 欧美激情久久久| 亚洲欧美久久久| 欧美精品日韩精品| 国产中文一区二区| 亚洲影视九九影院在线观看| 欧美好吊妞视频| 亚洲欧洲av一区二区三区久久| 欧美激情一区二区三区在线| 黑人一区二区| 欧美亚洲一区三区| 亚洲欧洲在线视频| 久久久久久久91| 国产日韩欧美麻豆| 亚洲尤物视频网| 亚洲精品午夜| 女女同性精品视频| 在线播放亚洲| 久久久久久久综合| 亚洲综合日韩在线| 国产精品yjizz| 亚洲精品欧美精品| 亚洲国产精品精华液网站| 一区二区三区视频免费在线观看| 久久精品99久久香蕉国产色戒| 国产精品高清一区二区三区| 一本色道综合亚洲| 亚洲国产精品成人综合色在线婷婷| 久久精品2019中文字幕| 国产精品专区第二| 亚洲欧美在线免费观看| 一区二区欧美日韩| 欧美日韩在线不卡| 正在播放亚洲一区| 亚洲久久成人| 欧美日韩另类视频| 野花国产精品入口| 亚洲区一区二区三区| 欧美激情aⅴ一区二区三区| 在线视频国产日韩| 欧美韩日一区二区三区| 牛牛国产精品| aa成人免费视频| 一本色道88久久加勒比精品| 国产精品成人观看视频国产奇米| 亚洲一线二线三线久久久| 一区二区免费在线视频| 国产精品日日做人人爱| 久久九九免费| 久久亚洲二区| 99精品视频免费观看| 亚洲欧洲精品一区二区三区不卡| 欧美裸体一区二区三区| 亚洲无限乱码一二三四麻| 亚洲一区制服诱惑| 狠狠操狠狠色综合网| 亚洲黄色在线观看| 欧美午夜精品久久久久久浪潮| 性色av香蕉一区二区| 久久久高清一区二区三区| 亚洲激情电影在线| 99精品免费| 国内精品久久久久久影视8| 免费在线欧美黄色| 欧美日韩成人激情| 香蕉成人久久| 久久在线免费观看| 99re在线精品| 欧美在线视频在线播放完整版免费观看 | 欧美视频三区在线播放| 午夜精品在线观看| 久久久国产精品一区| 99ri日韩精品视频| 午夜一区二区三区不卡视频| 亚洲国产综合视频在线观看| 99re在线精品| 激情婷婷亚洲| 亚洲成人自拍视频| 亚洲欧美日韩一区二区| 欧美一区二区三区四区高清| 99精品欧美一区二区三区综合在线| 亚洲欧美日韩国产一区| 亚洲国产精品成人综合| 亚洲天堂久久| 亚洲靠逼com| 久久精品国产96久久久香蕉| 亚洲视频欧美在线| 久久一区二区精品| 亚洲一区二区三区777| 久久免费黄色| 亚洲性感美女99在线| 榴莲视频成人在线观看| 性欧美大战久久久久久久免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 日韩视频一区二区三区在线播放免费观看 | 欧美午夜精品一区| 欧美第一黄色网| 国产精品欧美日韩一区| 亚洲精品国产欧美| 亚洲国产综合在线看不卡| 久久se精品一区二区| 亚洲欧美在线免费| 欧美性猛交xxxx乱大交退制版 | 美日韩精品视频免费看| 国产精品手机视频| 一本色道久久综合| 日韩午夜免费| 免费看亚洲片| 欧美成人一区二免费视频软件| 国产日韩精品视频一区二区三区| 亚洲人成网站精品片在线观看| 在线电影一区| 免费成人网www| 免费观看久久久4p| 亚洲国产高清高潮精品美女| 久久视频在线视频| 麻豆久久婷婷| 亚洲国产精品久久久久秋霞蜜臀| 久久久久欧美| 欧美电影在线观看| 亚洲精品美女| 亚洲国产综合在线| 国产亚洲精品久久久久动| 亚洲美女av电影| 久久人91精品久久久久久不卡| 久久精品一区| 国产综合久久久久久鬼色| 亚洲自拍偷拍网址| 欧美一级视频| 国产午夜精品一区二区三区欧美| 亚洲一区制服诱惑| 久久精彩视频| 亚洲福利一区| 欧美激情一区二区三区在线 | 欧美国产一区在线| 亚洲福利小视频| 日韩网站在线看片你懂的| 欧美理论电影在线观看| 99在线热播精品免费| 午夜精品久久一牛影视| 国产亚洲一区在线| 免费试看一区| 这里只有精品视频| 久久漫画官网| 亚洲精品少妇30p| 欧美日韩一区二区高清| 亚洲欧美日本伦理| 欧美不卡视频| 亚洲一级黄色片| 国产亚洲视频在线| 欧美77777| 亚洲图片在线| 免费日韩av| 午夜视频在线观看一区二区| 精品99视频| 国产精品白丝av嫩草影院| 欧美在线播放| 亚洲精品男同| 久久久精品日韩| 中国日韩欧美久久久久久久久| 国产日韩精品电影| 欧美日韩精品一区二区三区| 久久国产一区| 中国成人在线视频| 免费观看久久久4p| 香蕉久久夜色| 日韩视频在线观看| 韩日视频一区| 欧美日韩一区二区在线观看 | 国产精品一区在线观看你懂的| 久久躁日日躁aaaaxxxx| 亚洲香蕉在线观看| 亚洲人成欧美中文字幕| 麻豆成人在线播放| 欧美在线3区| 亚洲一二三级电影| 亚洲免费激情|