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

            Note of Justin

            關于工作和讀書的筆記

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              47 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

            留言簿(14)

            搜索

            •  

            積分與排名

            • 積分 - 52710
            • 排名 - 433

            最新評論

            閱讀排行榜

            評論排行榜

            原創文章歡迎轉載,但請保留作者信息]
            Justin 于 2009-12-16

            其實原作標題為“把類當作類型一樣設計”(Treat class design as type design),但是我意識還沒到大師的水準,領悟不了。于是做回標題黨,醒目一些以便引起以后重讀時的注意。
            要做到上面的要求其實不容易,范圍太大了,跟要一輩子做個好人一樣@#¥%

            于是大師指出下面幾個方向:

            • 小心設計類的創建和銷毀方式。比如說Item8和Item16
            • 認真考慮如何區分類的構造函數和拷貝函數。兩者確實有夠像,但是也確實不一樣。(哲學啊哲學……)
              是不是說如果兩者一樣的時候就要懷疑是不是有出錯的可能?
            • 注意實現類的傳值(passed by value)。這個實際上是在說要注意拷貝構造函數的實現。
            • 切勿忽略類對非法輸入的處理。其實是要注意各種出錯情況,是否需要拋出異常以及如何實現異常處理。
            • 需要審視類所在的繼承體系。如果該類有父類,那么必定要受到父類的一些限制;如果該類有子類,那么就要考慮是不是一些函數需要定義為虛函數,比如說析構函數。
            • 謹慎實現類對象與其他類型對象的轉換。這一點稍有些復雜:如果有將T1轉換為T2的需求,就有隱式轉換和顯式轉換兩種方式。
              對于前者,可以編寫一個(隱式的)轉換函數(如果讀到這里你也像我一樣不明白,參考Item15里面的隱式轉換咯~),或者是通過額外編寫一個T2的構造函數來實現T1向T2的轉換。
              對于后者,Scott說寫一個(顯式的)轉換函數就可以了。(同樣,在Item15里也有顯式轉換函數的例子)
            • 需要考慮該類需要參與哪些運算。很明顯,如果需要參與A運算就要相應定義類的A運算符函數。大師在這里提的另外一點是,這些運算符號函數有些應該是成員函數,有些不應該。原因在Item23、24、26【555我還沒看到,留空】
            • 不要提供不應該暴露的標準函數。這里的標準函數指的是構造/析構/拷貝等等可能由編譯器“自愿”為你生成的函數,如果不希望它們中的一些被外界調用,就聲明為私有(private)。沒印象了?降級到Item6重新學習~
            • 注意設計類成員的訪問權限。公有(public)、保護(protected)、私有(private)應該用哪一種?有沒有需要定義友元?或者是干脆來一個類中類?都需要考慮。
              認真審查類的隱性限制。性能上的要求、使用資源的限制或是出錯時的處理都有可能影響到類的具體設計和實現。
            • 謹慎考慮類的適用范圍。也就是說如果某個設計會可能用在很多方面,適用于許多不同的實際對象。也許這個時候你需要設計的不是一個類,而是一個類模板。
            • 最后一點其實應該放在第一位:你真的需要定義一個類嗎?如果僅僅是在繼承某類的基礎上加一兩個成員,是不是非成員函數或模板就已經夠了捏?

            以上就是Scott大師在一個Item里面談到的需要注意的方面,看完了我想:沒那么容易吧……
            第19招其實更像是個check list,在準備動手設計之前,一一比對打勾劃叉,應該可以提前避免很多人間慘劇……


            posted on 2010-01-03 08:15 Justin.H 閱讀(1514) 評論(0)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯
            欧美日韩久久中文字幕| 久久综合给合久久狠狠狠97色| 国内精品久久久久影院一蜜桃| 久久av无码专区亚洲av桃花岛| 国产亚洲婷婷香蕉久久精品| 久久国产香蕉一区精品| 7777久久久国产精品消防器材| 精品999久久久久久中文字幕| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 精品国产99久久久久久麻豆| 69久久夜色精品国产69| 伊人久久无码精品中文字幕| 97久久香蕉国产线看观看| 深夜久久AAAAA级毛片免费看| 99久久这里只有精品| 伊人色综合久久天天人手人婷| 草草久久久无码国产专区| 一本色道久久88—综合亚洲精品| 精品久久久久久久久久中文字幕| 久久久亚洲欧洲日产国码二区| 伊人久久大香线蕉成人| 久久99精品国产麻豆宅宅| 色综合久久久久综合体桃花网| 久久免费香蕉视频| 国产—久久香蕉国产线看观看| 亚洲午夜久久久久久久久电影网| 青青热久久国产久精品| 狠狠久久综合伊人不卡| 97久久精品人人澡人人爽| 亚洲狠狠综合久久| 欧美一区二区精品久久| 中文字幕亚洲综合久久| 亚洲伊人久久大香线蕉苏妲己| 亚洲一本综合久久| 国内精品久久久久久久coent| 激情久久久久久久久久| 国产女人aaa级久久久级| 久久久久久A亚洲欧洲AV冫| 久久久久亚洲AV成人网人人网站 | 久久香蕉国产线看观看精品yw| 欧洲人妻丰满av无码久久不卡|