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

            tbwshc

            tbw

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(4)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            任何接口設計的一個準則:讓接口容易被正確使用,不容易被誤用。

            理想上:如何客戶企圖使用某個接口缺沒有獲得他所預期的行為,這個代碼不該通過編譯;如果代碼通過了編譯,他的行為就該是客戶所想要的。

            1. 導入外覆類型(wrapper types)

            2. 讓types容易被正確使用,不容易被誤用。盡量領你的types行為與內置types一致。

            3. 設計class猶如設計type

            新type的對象應該如何被創建和銷毀?(自己設計operatornew,operatornew[],operator delete和operator delete[])

            對象的初始化和對象的復制該有什么樣的差別?對應于不同的函數調用

            新type的對象如果被passed by value ,意味著什么

            什么是新type的“合法值”?(??)

            你的新type需要配合某個繼承圖系嗎?

            你的心type需要什么樣的轉換

            什么樣的操作符合函數對此新type而言是合理的

            什么樣的標準函數應該駁回

            誰該取用新type的成員

            什么是新type的未聲明接口

            你的新type有多么一般化

            你真的需要一個新type嗎

             

            一、寧以pass-by-reference-to-const 替換 pass-by-value

            1.tbw效率高,沒有任何構造函數或析構函數被調用,因為沒有任何新對象被創建。

            2. by refrenece方式傳遞參數還可以避免對象slicing 問題

            二、必須返回對象時,別妄想返回其reference

            所有用上static對象的設計,會造成多線程安全性的懷疑。

            三、將成員變量聲明為private:

            1. 可以實現出“不準訪問”、“只讀訪問”、“讀寫訪問”、“惟寫訪問”

            2. 封裝:它使我們能夠改變事物而只影響有限客戶。

            將成員變量隱藏在函數接口的背后,可以為“所有可能的實現”提供彈性。如:tb變量被讀或被寫時通知其他對象、可以驗證class的約束條件以及函數的前提和事后轉帖;以及在多線程環境執行同步控制。。。。等。

            四、寧以non-member、non-friend替換member函數

            1. namespace WebBrowserStuff{ 
            2.         class WebBrowser{...}; 
            3.         void clearBrowser(WebBrowser& wb); 

            五、若所有參數皆需要類型轉換,請為此采用non-member函數

            1. class Rational { 
            2. ... 
            3.  
            4. const Rational operator*(const Rational& lhs,const Rational& rhs) 
            5. return Rational( lhs.numerator()* rhs.numerator()
            6. ,lhs.denominator()*rhs.denominator() ); 
            7.  
            8. Rational oneFourth(1,4); 
            9. Rational result; 
            10. result = oneFourth * 2; 
            11. result = 2*oneFourth; 

             六、考慮寫出一個不拋異常的swap函數

            posted on 2013-06-25 17:17 tbwshc 閱讀(548) 評論(0)  編輯 收藏 引用
            久久笫一福利免费导航| AA级片免费看视频久久| 亚洲天堂久久久| 97精品伊人久久久大香线蕉| 亚洲va久久久噜噜噜久久天堂| 国产99久久精品一区二区| 青青青伊人色综合久久| 久久久99精品成人片中文字幕| 久久亚洲AV永久无码精品| 三级三级久久三级久久| 久久精品国产秦先生| 欧洲性大片xxxxx久久久| 久久综合噜噜激激的五月天| 国产叼嘿久久精品久久| 久久亚洲AV成人无码电影| 无码人妻少妇久久中文字幕| 狠狠干狠狠久久| 亚洲中文字幕无码久久2017 | 久久久久久久亚洲精品| 久久综合狠狠综合久久综合88 | 日韩人妻无码精品久久久不卡| 99热都是精品久久久久久| 综合网日日天干夜夜久久 | 国产精品一区二区久久| 久久WWW免费人成一看片| 亚洲国产精品久久久久网站 | 色婷婷久久综合中文久久蜜桃av | 免费精品国产日韩热久久| 国产精品久久久久国产A级| 久久久久久精品免费看SSS| 久久免费视频6| 久久人人爽人人爽人人片AV东京热 | 亚洲国产成人久久一区WWW| 国产精品久久久天天影视| 久久精品亚洲精品国产色婷 | 色欲综合久久躁天天躁蜜桃| 人人狠狠综合久久亚洲高清| 久久久久一本毛久久久| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 久久久久久人妻无码| 人人狠狠综合久久88成人|