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

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19
[轉]http://m.shnenglu.com/tiandejian/archive/2007/05/20/ec_19.html

第18條:     要像設計類型一樣設計 class

與其它的面向對象編程語言類似,在 C++ 中,定義一個新的 class 便會引入一個新的類型的定義。一個 C++ 設計人員的大多數時間都會用在不斷豐富充實他們的類系統上。這意味著他不僅僅是一個 class 的設計者,而且是一個類型的設計者。重載函數和運算符、控制內存的分配和釋放、定義函數用于完成對象初始化和終止操作——這些都由設計人員全權包辦。我們知道語言設計人員在設計語言內置的數據類型時傾注了大量心血,而一個類設計人員也要花費差不多的精力。

能否設計出優秀的 class 對于設計人員來說是一項嚴峻的考驗,因為設計類型本身就是一項艱巨的任務。優秀的類型應該擁有自然的語法、直觀的語義,并且還要有一套或更多高效的實現。在 C++ 中,如果定義 class 的工作做得一團糟,那么期望達到上面的目標就是天方夜譚。甚至類的成員函數的聲明方式也會影響到它的性能。

那么,如何把類設計得更高效呢?首先,你必須要了解你所面對的問題。幾乎所有的類都需要你考慮下面的問題,它們的答案可以對設計起到一定的約束作用:

新類型的對象應如何創建和刪除? 類中與之相關的函數包括:構造函數和析構函數,以及類中其它的內存分配和釋放函數( operator new operator new[] operator delete operator delete[] ,參見第 8 章)。如果你自己手動編寫它們,這個問題的解決方式將會影響到這些函數。

對象初始化與對象賦值有什么不同? 這個問題的答案決定著構造函數與賦值運算符之間的區別。不要混淆初始化和賦值的概念,這一點很重要,因為它們與不同的函數調用相關。

對于新類型的對象如何通過傳值方式傳遞? 請牢記,拷貝構造函數定義了本類型如何通過傳值來傳遞對象。

新類型對合法數值有哪些限制? 通常情況下,只有一些數值的集合來限定類的數據成員是否合法。這些集合決定了類中需要維護哪些恒量。而這些恒量又決定著數據成員中要進行哪些錯誤檢查,尤其是構造函數、賦值運算符、以及“調節”函數。它們還會影響到函數會拋出什么樣的異常,同時,是否應用這些集合,還會影響到函數異常的詳細內容。

新類型是否適用于繼承? 如果新類是由現成的類繼承而來的,那么就必須讓新類符合繼承的特征。尤其是要確定父類的成員函數是否應為虛函數(參見第 34 和第 36 條)。如果期望讓其 它的類可以繼承本類 ,就需要考慮本類的成員函數是否應為虛函數,尤其是它的析構函數(參見第 7 條)。

新類型允許進行哪些類型轉換? 新的類型存在于其它類型的海洋中,那么是否應該提供新類型與其它類型的轉型功能呢?如果你期望為 T1 的一個對象提供途徑從而隱式將類型轉換為 T2 。可以 通過在 T1 類中放置一個類型轉換函數(比如 operator T2 ),或者在 T2 類中放置一個有單一參數的非 explicit 造函數。如果你僅僅期望允許顯式類型轉換,就需要編寫函數來執行這一轉換,但是這一函數不應是類型轉換運算符,也不應是 單一參數的非 explicit 造函數。(第 15 條中有隱式 / 顯式轉換函數的示例。)

哪些運算符和函數對新類型是有意義的? 這個問題的答案取決于你會為你的類生命哪些函數。一些函數將成為成員函數,而一些則不會(參見第 23 24 46 條)。

應明確拒絕哪些標準函數? 通過將它們聲明為 private 的可達到這一目的(參見第 6 條)。

誰可以訪問新類型中的數據成員? 這一問題可以幫助我們確定哪些成員應聲明為 public 的,哪些是 protected ,哪些是 private 。同時,也可以幫助我們確定哪些類和 / 或函數應該是友元,還有類的嵌套是否有意義。

新類型中有哪些“尚未聲明的接口”? 新類型中提供了哪些性能、異常安全(參見第 29 條)、資源使用的保證(比如互斥鎖、動態內存)?這些保證將會為類的實現提供更嚴格的約束。

新類型有多通用? 可能你想做得并不是定義一個新類型。而是定義一新類型。如果真是這樣,你需要定義一個新的類模板

這個新類型是否滿足了需求? 如果你創建新的派生類僅僅為了為現有的類添加新的功能,那么通過簡單地定義一個或多個非成員函數或者模板可能會更好的達到目標。

完整地回答以上的問題并不是一件簡單的事情,所以定義高效的類就是一項嚴峻的挑戰。然而,如果成功經受了這一挑戰,那么由用戶自定義的類產生的類型至少可以像內建數據類型一樣好用。一切都是值得的。

牢記在心

class 設計就是類型的設計。在定義一個新的類型之前,要確保將上面所有的問題考慮周全。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品日韩久久| 亚洲激情视频在线播放| 久久天天狠狠| 久久午夜av| 免费在线成人| 久久综合激情| 欧美大胆成人| 欧美日韩一本到| 国产精品推荐精品| 国产欧美综合在线| 亚洲国产成人av| 亚洲视频视频在线| 久久视频一区| 亚洲精品一区二区三区婷婷月| 日韩亚洲精品在线| 欧美一区二区视频在线| 鲁鲁狠狠狠7777一区二区| 欧美日韩中文在线观看| 国模叶桐国产精品一区| 亚洲精品看片| 欧美一区二区三区另类| 欧美成年人网站| 亚洲午夜激情网站| 免费久久99精品国产自在现线| 欧美激情一二三区| 日韩一区二区免费高清| 亚洲一区欧美| 欧美亚洲视频一区二区| 免费不卡在线观看| 国产精品视频| 日韩一级裸体免费视频| 欧美伊人久久久久久午夜久久久久| 麻豆九一精品爱看视频在线观看免费 | 亚洲欧美清纯在线制服| 久久综合色天天久久综合图片| 亚洲精品1区| 亚洲无线视频| 欧美大片在线看| 韩日精品在线| 欧美亚洲视频在线观看| 亚洲韩国日本中文字幕| 久久福利精品| 国产伦理一区| 亚洲资源在线观看| 亚洲精品影视在线观看| 久久视频一区| 黄色国产精品一区二区三区| 亚洲主播在线| 一区二区三区回区在观看免费视频| 久久露脸国产精品| 好吊成人免视频| 久久精品1区| 亚洲欧美伊人| 国产欧美日本一区视频| 午夜精品福利一区二区三区av | 老司机午夜精品视频在线观看| 亚洲一二三级电影| 欧美亚一区二区| 亚洲一品av免费观看| 亚洲欧洲日本在线| 欧美激情一区在线| 99亚洲伊人久久精品影院红桃| 欧美黄色影院| 欧美激情亚洲激情| 一区二区三区欧美在线| 亚洲精品孕妇| 欧美视频精品在线| 亚洲一区亚洲二区| 亚洲视频www| 国产女人18毛片水18精品| 欧美一级视频| 久久精品欧洲| 亚洲区第一页| 一本综合精品| 国产日韩一区二区| 免费在线亚洲欧美| 欧美不卡视频一区发布| 久久精品国产一区二区三区| 一区二区三区欧美成人| 亚洲日本成人网| 翔田千里一区二区| 亚洲麻豆一区| 国产日韩欧美精品| 欧美日韩中文精品| 老司机午夜精品| 一区二区三区四区精品| 久久亚洲欧美| 一区二区三区欧美成人| 国产日韩高清一区二区三区在线| 9久re热视频在线精品| 一本综合久久| 国产视频一区三区| 免费高清在线视频一区·| 久久久亚洲精品一区二区三区 | 国产亚洲免费的视频看| 久久久人成影片一区二区三区观看| 久久激情视频久久| 亚洲精品午夜| 午夜精品国产| 日韩视频精品| 欧美一区午夜精品| 99视频在线精品国自产拍免费观看| 亚洲一区二区免费视频| 亚洲高清三级视频| 亚洲欧美韩国| 宅男噜噜噜66国产日韩在线观看| 久久国产精品亚洲77777| 一本大道久久精品懂色aⅴ| 欧美一区观看| 亚洲欧美日韩精品在线| 裸体歌舞表演一区二区| 欧美一区二区三区视频免费播放| 久久只有精品| 久久久久久久综合色一本| 欧美日韩系列| 亚洲第一主播视频| 国产一区二区成人| 亚洲午夜伦理| 99国产精品一区| 美女免费视频一区| 久热综合在线亚洲精品| 国产精品永久入口久久久| 亚洲精品欧美一区二区三区| 有码中文亚洲精品| 久久精品国产亚洲aⅴ| 午夜久久美女| 国产精品九九| 一区二区日韩欧美| 亚洲一级免费视频| 欧美日韩在线免费观看| 亚洲国产精品女人久久久| 激情综合电影网| 亚洲精品视频在线播放| 久久久久www| 亚洲伦伦在线| 一区二区视频免费完整版观看| 国产有码一区二区| 久久久精品999| 欧美怡红院视频| 欧美成人亚洲成人日韩成人| 欧美日韩和欧美的一区二区| 国产精品扒开腿做爽爽爽软件 | 久久免费黄色| 欧美日韩国产va另类| 国产亚洲欧美日韩美女| 亚洲精品一区二区三区樱花 | 亚洲免费观看高清完整版在线观看| 国产精品一区免费在线观看| 欧美日韩一区二区三区在线看 | 一本大道久久a久久综合婷婷| 亚洲国产精品一区二区久 | 在线一区视频| 亚洲电影在线观看| 日韩五码在线| 久久精品系列| 国产精品盗摄久久久| 欧美黄色小视频| 亚洲视频在线观看免费| 久久久久久久999精品视频| 国产一区白浆| 欧美va天堂va视频va在线| 亚洲午夜电影网| 国产精品视频精品| 国产精品视频一区二区高潮| 欧美在线免费视屏| 久久久久9999亚洲精品| 久久99在线观看| 国产精品男gay被猛男狂揉视频| 亚洲第一久久影院| 久久xxxx| 亚洲精选在线观看| 日韩亚洲在线观看| 999在线观看精品免费不卡网站| 欧美日韩精品在线播放| 亚洲图片自拍偷拍| 久久综合五月| 亚洲欧美在线aaa| 亚洲精品久久久久中文字幕欢迎你 | 亚洲一区二区三区中文字幕在线| 久久久精品国产一区二区三区| 亚洲高清视频在线观看| 亚洲精品1区| 国产一区二区精品久久| 亚洲午夜精品一区二区| 日韩一二三在线视频播| 久久视频精品在线| 久久精品天堂| 国产在线精品成人一区二区三区| 一区二区高清| 欧美亚洲一区二区在线| 国产精品伦理| 欧美影院精品一区| 老牛国产精品一区的观看方式| 国产欧美69| 久久精品二区三区| 欧美不卡高清| 亚洲伊人第一页| 国内精品久久久久久影视8| 久久经典综合| 亚洲私人影院|