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

            關(guān)于工作和讀書(shū)的筆記

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              47 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

            留言簿(14)

            搜索

            •  

            積分與排名

            • 積分 - 53109
            • 排名 - 433

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            原創(chuàng)文章歡迎轉(zhuǎn)載,但請(qǐng)保留作者信息]
            Justin 于 2009-12-16

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

            于是大師指出下面幾個(gè)方向:

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

            以上就是Scott大師在一個(gè)Item里面談到的需要注意的方面,看完了我想:沒(méi)那么容易吧……
            第19招其實(shí)更像是個(gè)check list,在準(zhǔn)備動(dòng)手設(shè)計(jì)之前,一一比對(duì)打勾劃叉,應(yīng)該可以提前避免很多人間慘劇……


            posted on 2010-01-03 08:15 Justin.H 閱讀(1522) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯
            国产精久久一区二区三区| 国产激情久久久久影院小草| 久久国产香蕉一区精品| 伊人丁香狠狠色综合久久| 成人久久精品一区二区三区| 国产精品久久久久天天影视| 国产精品九九九久久九九| 九九热久久免费视频| 亚洲欧美国产精品专区久久| 久久久亚洲欧洲日产国码aⅴ| 少妇人妻88久久中文字幕| 国产精品久久久天天影视香蕉| 久久综合成人网| 精品久久久久久中文字幕| 亚洲v国产v天堂a无码久久| 97久久超碰国产精品2021| 久久精品国产亚洲AV蜜臀色欲 | 久久亚洲国产最新网站| 国产成人香蕉久久久久| 亚洲а∨天堂久久精品| 亚洲va中文字幕无码久久不卡| 久久夜色精品国产亚洲| 久久精品中文字幕大胸| 亚洲午夜精品久久久久久app| 亚洲午夜精品久久久久久人妖| 国产精品久久自在自线观看| 午夜精品久久久久久久| 亚洲国产一成人久久精品 | 久久99热国产这有精品| 九九精品99久久久香蕉| 青青草国产精品久久| 久久久精品国产亚洲成人满18免费网站 | 精品久久久久久无码专区不卡| 久久久久成人精品无码中文字幕 | 久久精品九九亚洲精品天堂| 久久精品国产亚洲av麻豆小说| 日韩人妻无码精品久久免费一| 久久精品人人做人人爽97 | 久久99精品久久久久久齐齐| 精品一久久香蕉国产线看播放| 一本综合久久国产二区|