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

Shuffy

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

第18條:     要像設(shè)計(jì)類型一樣設(shè)計(jì) class

與其它的面向?qū)ο缶幊陶Z(yǔ)言類似,在 C++ 中,定義一個(gè)新的 class 便會(huì)引入一個(gè)新的類型的定義。一個(gè) C++ 設(shè)計(jì)人員的大多數(shù)時(shí)間都會(huì)用在不斷豐富充實(shí)他們的類系統(tǒng)上。這意味著他不僅僅是一個(gè) class 的設(shè)計(jì)者,而且是一個(gè)類型的設(shè)計(jì)者。重載函數(shù)和運(yùn)算符、控制內(nèi)存的分配和釋放、定義函數(shù)用于完成對(duì)象初始化和終止操作——這些都由設(shè)計(jì)人員全權(quán)包辦。我們知道語(yǔ)言設(shè)計(jì)人員在設(shè)計(jì)語(yǔ)言內(nèi)置的數(shù)據(jù)類型時(shí)傾注了大量心血,而一個(gè)類設(shè)計(jì)人員也要花費(fèi)差不多的精力。

能否設(shè)計(jì)出優(yōu)秀的 class 對(duì)于設(shè)計(jì)人員來(lái)說(shuō)是一項(xiàng)嚴(yán)峻的考驗(yàn),因?yàn)樵O(shè)計(jì)類型本身就是一項(xiàng)艱巨的任務(wù)。優(yōu)秀的類型應(yīng)該擁有自然的語(yǔ)法、直觀的語(yǔ)義,并且還要有一套或更多高效的實(shí)現(xiàn)。在 C++ 中,如果定義 class 的工作做得一團(tuán)糟,那么期望達(dá)到上面的目標(biāo)就是天方夜譚。甚至類的成員函數(shù)的聲明方式也會(huì)影響到它的性能。

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

新類型的對(duì)象應(yīng)如何創(chuàng)建和刪除? 類中與之相關(guān)的函數(shù)包括:構(gòu)造函數(shù)和析構(gòu)函數(shù),以及類中其它的內(nèi)存分配和釋放函數(shù)( operator new operator new[] operator delete operator delete[] ,參見第 8 章)。如果你自己手動(dòng)編寫它們,這個(gè)問(wèn)題的解決方式將會(huì)影響到這些函數(shù)。

對(duì)象初始化與對(duì)象賦值有什么不同? 這個(gè)問(wèn)題的答案決定著構(gòu)造函數(shù)與賦值運(yùn)算符之間的區(qū)別。不要混淆初始化和賦值的概念,這一點(diǎn)很重要,因?yàn)樗鼈兣c不同的函數(shù)調(diào)用相關(guān)。

對(duì)于新類型的對(duì)象如何通過(guò)傳值方式傳遞? 請(qǐng)牢記,拷貝構(gòu)造函數(shù)定義了本類型如何通過(guò)傳值來(lái)傳遞對(duì)象。

新類型對(duì)合法數(shù)值有哪些限制? 通常情況下,只有一些數(shù)值的集合來(lái)限定類的數(shù)據(jù)成員是否合法。這些集合決定了類中需要維護(hù)哪些恒量。而這些恒量又決定著數(shù)據(jù)成員中要進(jìn)行哪些錯(cuò)誤檢查,尤其是構(gòu)造函數(shù)、賦值運(yùn)算符、以及“調(diào)節(jié)”函數(shù)。它們還會(huì)影響到函數(shù)會(huì)拋出什么樣的異常,同時(shí),是否應(yīng)用這些集合,還會(huì)影響到函數(shù)異常的詳細(xì)內(nèi)容。

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

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

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

應(yīng)明確拒絕哪些標(biāo)準(zhǔn)函數(shù)? 通過(guò)將它們聲明為 private 的可達(dá)到這一目的(參見第 6 條)。

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

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

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

這個(gè)新類型是否滿足了需求? 如果你創(chuàng)建新的派生類僅僅為了為現(xiàn)有的類添加新的功能,那么通過(guò)簡(jiǎn)單地定義一個(gè)或多個(gè)非成員函數(shù)或者模板可能會(huì)更好的達(dá)到目標(biāo)。

完整地回答以上的問(wèn)題并不是一件簡(jiǎn)單的事情,所以定義高效的類就是一項(xiàng)嚴(yán)峻的挑戰(zhàn)。然而,如果成功經(jīng)受了這一挑戰(zhàn),那么由用戶自定義的類產(chǎn)生的類型至少可以像內(nèi)建數(shù)據(jù)類型一樣好用。一切都是值得的。

牢記在心

class 設(shè)計(jì)就是類型的設(shè)計(jì)。在定義一個(gè)新的類型之前,要確保將上面所有的問(wèn)題考慮周全。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人亚洲| 99精品视频一区| 欧美欧美全黄| 欧美二区在线| 亚洲深夜影院| 亚洲综合欧美| 久久精品国产一区二区三区免费看| 亚洲综合99| 午夜精品久久久久久久久久久久久| 亚洲精品色婷婷福利天堂| 99国产精品久久久久久久久久| 日韩一级免费| 久久精品在线视频| 亚洲激情成人| 亚洲欧洲在线免费| 午夜日韩在线| 免费日韩精品中文字幕视频在线| 欧美精品一区二区在线播放| 国产精品一区二区久久久| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲国产毛片完整版| 久久www成人_看片免费不卡| 亚洲国产欧美在线| 午夜精品久久久久久久蜜桃app | 欧美激情一区二区三区高清视频| 欧美xart系列高清| 国内精品免费在线观看| 欧美激情一二区| 欧美激情aⅴ一区二区三区| 国产综合在线视频| 欧美一级视频精品观看| 一区二区三区**美女毛片| 欧美亚洲一区二区在线观看| 欧美黑人多人双交| 久久久精品一区| 国外成人网址| 免费亚洲婷婷| 免费观看亚洲视频大全| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久久美女艺术照精彩视频福利播放| 欧美日韩在线播放三区| 日韩视频一区二区三区在线播放免费观看 | 久久婷婷蜜乳一本欲蜜臀| 国产精品稀缺呦系列在线| 亚洲激情电影在线| 亚洲精品视频啊美女在线直播| 久久夜色精品国产亚洲aⅴ| 亚洲二区视频在线| 久久日韩粉嫩一区二区三区| 可以看av的网站久久看| 亚洲人精品午夜| 亚洲精品美女在线观看| 国产精品视频成人| 久久aⅴ国产紧身牛仔裤| 久久精品主播| 久久亚洲国产成人| 亚洲精品久久久久| 亚洲一区二区三区精品视频| 在线免费观看日韩欧美| 亚洲无人区一区| 精品不卡在线| 亚洲午夜国产成人av电影男同| 亚洲国产精彩中文乱码av在线播放 | 亚洲伊人观看| 亚洲欧洲日产国产网站| 在线中文字幕一区| 亚洲国产精品v| 嫩草成人www欧美| 久久在线免费视频| 国产亚洲在线观看| 亚洲一区二区三区欧美| 在线看一区二区| 亚洲美女av网站| 狠狠色狠狠色综合日日小说| 亚洲一卡久久| 午夜精品亚洲一区二区三区嫩草| 在线免费观看欧美| 欧美成人r级一区二区三区| 欧美激情成人在线| 尤物精品国产第一福利三区| 久久国产一二区| 老司机aⅴ在线精品导航| 亚洲成人在线视频播放| 久久黄色小说| 另类激情亚洲| 中文精品视频| 国产欧美亚洲精品| 久久网站免费| 亚洲人人精品| 欧美激情片在线观看| 最新亚洲一区| 欧美国产一区二区| 亚洲调教视频在线观看| 久久久久国产一区二区| 亚洲精品专区| 国产区精品在线观看| 午夜精品福利电影| 亚洲伦理自拍| 亚洲福利专区| 久久久综合网| 亚洲欧美精品在线| 精品va天堂亚洲国产| 欧美激情中文字幕乱码免费| 亚洲一区二区三区四区五区午夜| 欧美亚洲专区| 亚洲视频一区二区| 激情成人在线视频| 国产精品日产欧美久久久久| 欧美丰满高潮xxxx喷水动漫| 欧美一区不卡| 一区二区三区**美女毛片 | 亚洲国产精品一区二区www在线| 国产精品日日摸夜夜添夜夜av | 亚洲剧情一区二区| 欧美成人精品三级在线观看| 久久人人九九| 免费精品视频| 欧美成人国产va精品日本一级| 性欧美大战久久久久久久免费观看 | 国产精品嫩草久久久久| 欧美国产国产综合| 免费欧美日韩| 欧美日韩视频在线一区二区| 欧美精品免费看| 欧美日韩精品免费观看视一区二区 | 欧美日韩亚洲高清一区二区| 久久夜精品va视频免费观看| 久久国产色av| 欧美福利在线| 国产精品久久久久秋霞鲁丝| 欧美国产精品久久| 欧美精品久久久久久久免费观看| 久久资源av| 欧美日韩成人| 精品动漫一区| 亚洲少妇自拍| 亚洲第一福利社区| 亚洲午夜精品17c| 久久九九免费视频| 欧美极品一区二区三区| 国产欧美日韩在线视频| 日韩视频一区二区| 欧美在线一二三区| 99热免费精品在线观看| 久久亚洲精品一区| 国产一区二区福利| 一区二区三区四区精品| 欧美a级片网| 久久精品免费看| 国产精品网站一区| 亚洲欧美日韩精品久久久| 亚洲高清一区二| 免费黄网站欧美| 在线观看视频一区| 乱码第一页成人| 欧美+日本+国产+在线a∨观看| 国产亚洲福利一区| 免费日韩成人| 女人天堂亚洲aⅴ在线观看| 亚洲伊人伊色伊影伊综合网| 欧美成人午夜激情在线| 亚洲无限乱码一二三四麻| 亚洲精品人人| 亚洲精品三级| 国产亚洲一区在线播放| 欧美国产一区二区| 欧美另类高清视频在线| 亚洲欧美一级二级三级| 久久成人精品无人区| 亚洲精选在线观看| 亚洲欧美一区二区激情| 亚洲人永久免费| 午夜精品国产| 亚洲片在线资源| 亚洲图片欧洲图片av| 亚洲欧洲日产国码二区| 亚洲男人av电影| 亚洲欧洲精品一区二区| 亚洲制服欧美中文字幕中文字幕| 激情久久一区| 先锋影院在线亚洲| 亚洲欧美激情在线视频| 欧美精品一区在线播放| 欧美成人有码| 国产视频一区在线观看一区免费| 亚洲美女色禁图| 一本色道久久88综合日韩精品| 久久久久国产精品www| 久久黄色影院| 国产一区二区主播在线| 亚洲一区久久久| 久久成人国产精品| 国产亚洲精品久久久| 亚洲欧美日韩精品综合在线观看| 一区二区三区视频免费在线观看| 欧美成年人视频网站| 亚洲七七久久综合桃花剧情介绍| 亚洲精品一区二区三区福利| 欧美大片国产精品| 亚洲美女尤物影院|