C++編程慣用法

出版時(shí)間:2012-10  出版社:莫瑞 (Robert B. Murray) 人民郵電出版社 (2012-10出版)  作者:莫瑞  頁(yè)數(shù):228  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

  在《C++編程慣用法:高級(jí)程序員常用方法和技巧》中,C++專家Robert B. Murray與我們分享了他寶貴的經(jīng)驗(yàn)和建議,以幫助初中級(jí)C++程序員得到進(jìn)一步的提高?!  禖++編程慣用法:高級(jí)程序員常用方法和技巧》總共分為11章,先后介紹了抽象、類、句柄、繼承、多重繼承、考慮繼承的設(shè)計(jì)、模板的高級(jí)用法、重用、異常以及向C++的移植等相關(guān)的諸多話題。在書(shū)中,作者大量采用了實(shí)際開(kāi)發(fā)中的代碼作為示例,向讀者展示了那些有用的編程策略,并對(duì)那些有害的做法進(jìn)行了警示。為了幫助讀者更好地理解,在每一章結(jié)束前,在該章中介紹過(guò)的主要內(nèi)容都被放到了一個(gè)列表中,此外,書(shū)中還給出了一些問(wèn)題來(lái)激勵(lì)讀者們進(jìn)行更多的思考和討論?!  禖++編程慣用法:高級(jí)程序員常用方法和技巧》適合具有一定C++編程經(jīng)驗(yàn)的程序員和項(xiàng)目經(jīng)理閱讀,也適合對(duì)C++編程的高級(jí)主題感興趣的讀者參考。

作者簡(jiǎn)介

Robert B. Murray在著作本書(shū)時(shí)是Quantitative Data公司中負(fù)責(zé)軟件工程的副總裁,1該公司的業(yè)務(wù)包括向世界500強(qiáng)公司提供面向?qū)ο蟮能浖鉀Q方案.a在此之前,1他曾經(jīng)供職于AT&T貝爾實(shí)驗(yàn)室,并在那里參與了C++語(yǔ)言、編譯器和庫(kù)的開(kāi)發(fā)。他還是The C++ Report的創(chuàng)刊編輯。從1987年起,他就開(kāi)始在學(xué)術(shù)會(huì)議和專業(yè)會(huì)議上講授C++語(yǔ)言。

書(shū)籍目錄

第1章抽象 1.1 有關(guān)電話號(hào)碼的抽象模型 1.2抽象模型間的關(guān)系 1.3請(qǐng)考慮邊界條件 1.4使用CRC卡片來(lái)輔助設(shè)計(jì) 1.5小結(jié) 1.6問(wèn)題 第2章類 2.1構(gòu)造函數(shù) 2.2賦值 2.3公用數(shù)據(jù) 2.4隱式類型轉(zhuǎn)換 2.5操作符重載:成員或非成員? 2.6重載、缺省值以及省略符 2.7 Const 2.8返回值為引用 2.9靜態(tài)對(duì)象的構(gòu)造 2.10小結(jié) 2.11 問(wèn)題 第3章句柄 3.1一個(gè)String類 3.2使用計(jì)數(shù)器來(lái)避免多份拷貝 3.3 避免進(jìn)行重編譯:Cheshire Cat 3.4使用句柄來(lái)隱藏設(shè)計(jì) 3.5多種實(shí)現(xiàn) 3.6作為對(duì)象的句柄 3.7綜述 3.8小結(jié) 3.9問(wèn)題 第4章繼承 4.1is-a關(guān)系 4.2公有繼承 4.3私有繼承 4.4保護(hù)型繼承 4.5與基類抽象的一致性 4.6純虛函數(shù) 4.7有關(guān)繼承的細(xì)節(jié)和陷阱 4.8小結(jié) 4.9問(wèn)題 第5章多重繼承 5.1作為交集的多重繼承 5.2虛基類 5.3一些有關(guān)多重繼承的細(xì)節(jié)問(wèn)題 5.4小結(jié) 5.5問(wèn)題 第6章考慮繼承的設(shè)計(jì) 6.1被保護(hù)的接口 6.2我們的設(shè)計(jì)是否應(yīng)該考慮到繼承? 6.3一些為繼承所做的設(shè)計(jì)的例子 6.4結(jié)論 6.5小結(jié) 6.6問(wèn)題 第7章模板 7.1模板類Pair 7.2一些有關(guān)模板的細(xì)節(jié) 7.3模板的實(shí)例化 7.4智能指針 7.5作為模板參數(shù)的表達(dá)式 7.6模板函數(shù) 7.7小結(jié) 7.8問(wèn)題 第8章模板的高級(jí)用法 8.1使用了模板的容器類 8.2示例:Block 8.3有關(guān)Block的設(shè)計(jì)細(xì)節(jié) 8.4帶有迭代器的容器:List 8.5迭代器的設(shè)計(jì)細(xì)節(jié) 8.6性能上的考慮 8.7對(duì)模板參數(shù)的限制 8.8模板特化 8.9小結(jié) 8.10問(wèn)題 第9章重用 9.1發(fā)現(xiàn)和獲得 9.2健壯性 9.3內(nèi)存管理 9.4可選的內(nèi)存分配方案 9.5傳遞參數(shù)給operator new 9.6管理外部資源 9.7尋找有關(guān)內(nèi)存的bug 9.8名字沖突 9.9性能 9.10不要去猜想,而應(yīng)該度量! 9.11算法 9.12動(dòng)態(tài)內(nèi)存分配中的瓶頸 9.13內(nèi)嵌 9.14Tiemann法則 9.15小結(jié) 9.16問(wèn)題 第10章異常 10.1一個(gè)負(fù)面的聲明 10.2為什么需要異常? 10.3一個(gè)異常的例子 10.4異常只應(yīng)該用來(lái)表述異常情況 10.5理解異常 10.6責(zé)任評(píng)估 10.7設(shè)計(jì)異常對(duì)象 10.8小結(jié) 10.9問(wèn)題 第11章向C++移植 11.1選擇使用C++ 11.2采用C++ 11.3設(shè)計(jì)和實(shí)現(xiàn) 11.4開(kāi)發(fā)一個(gè)堅(jiān)實(shí)的基礎(chǔ) 11.5相關(guān)的思考 11.6小結(jié) 11.7問(wèn)題

章節(jié)摘錄

版權(quán)頁(yè):   插圖:   在另外一種備選方案中,我們關(guān)注的計(jì)數(shù)對(duì)象包括對(duì)所有的(智能)指針以及被它們所指向的對(duì)象。每隔一段時(shí)間,我們就會(huì)使用一個(gè)“垃圾收集器”去檢測(cè)所有已有的指針,并對(duì)它們所指向的對(duì)象進(jìn)行標(biāo)注。如果存在未被標(biāo)注的對(duì)象,它就會(huì)將該對(duì)象刪除。 這種做法既有好處,也有壞處。雖說(shuō)對(duì)一個(gè)使用了計(jì)數(shù)器的指針進(jìn)行的修改涉及多個(gè)計(jì)數(shù)器的改動(dòng)(見(jiàn)7.4.2的代碼),對(duì)一個(gè)被收集的指針進(jìn)行修改速度還是和對(duì)一個(gè)一般指針進(jìn)行修改的速度是一樣的。在天平的另一端,對(duì)指針以及被指向?qū)ο蟮膭?chuàng)建和刪除則要費(fèi)時(shí)得多,因?yàn)檫@些操作必須要更新用來(lái)記錄已有指針和對(duì)象的數(shù)據(jù)結(jié)構(gòu)。應(yīng)用程序的設(shè)計(jì)者必須決定在什么時(shí)候來(lái)運(yùn)行垃圾收集子程序。對(duì)于實(shí)時(shí)系統(tǒng)來(lái)說(shuō),在一個(gè)請(qǐng)求被響應(yīng)前,我們可能得不到足夠的時(shí)間來(lái)完成我們的垃圾收集操作,這也會(huì)使得我們的垃圾收集器的邏輯變得復(fù)雜起來(lái)。 然而,如果程序中的指針的值經(jīng)常發(fā)生改變,而指針本身和對(duì)象并不會(huì)經(jīng)常被創(chuàng)建和摧毀,那么使用這種方案就可以給我們帶來(lái)最佳的性能。 對(duì)于那些外界不能獲得的循環(huán)指向?qū)ο髞?lái)說(shuō),我們還是無(wú)法收集它們。不過(guò)我們可以通過(guò)對(duì)垃圾收集器進(jìn)行改進(jìn),增加一個(gè)根指針來(lái)應(yīng)付這種情況。如果所有的“活著的”對(duì)象都是要么被根指針?biāo)赶?,要么被另外一個(gè)“活著的”對(duì)象中的指針?biāo)赶?,那么垃圾收集器就可以從根指針開(kāi)始對(duì)所有后續(xù)的指針進(jìn)行遍歷,為每一個(gè)被指向的對(duì)象進(jìn)行標(biāo)注。由于垃圾收集器必須能夠找到對(duì)象中的所有指針,我們很難構(gòu)建一個(gè)通用的庫(kù)來(lái)支持這種垃圾收集方式。在實(shí)際應(yīng)用中,我們通常的做法是:為某個(gè)類手工創(chuàng)建一個(gè)單獨(dú)的函數(shù)來(lái)處理它。 9.4.3 Arena arena是用來(lái)管理內(nèi)存的最簡(jiǎn)單方案之一。但是它們只適用于某些特定的應(yīng)用程序。在這些程序中,每個(gè)對(duì)象都是在arena中創(chuàng)建的。在后期,當(dāng)arena被清空時(shí),所有在arena中的對(duì)象都會(huì)被刪除。 例如,我們假設(shè)有一個(gè)C++的解析器,它會(huì)去解析一系列的文件,在某個(gè)文件中都會(huì)包含一系列的外部聲明。在解析過(guò)程中,解析器可能會(huì)創(chuàng)建一系列的符號(hào)表用來(lái)表示解析中碰到的名字。解析器的作者可能會(huì)認(rèn)為,函數(shù)中聲明的符號(hào)在離開(kāi)函數(shù)后就將變得沒(méi)有價(jià)值,可以被丟棄了:但對(duì)于有著文件范圍屬性的符號(hào)來(lái)說(shuō),在文件被完整解析之前,它都不能被丟棄。

媒體關(guān)注與評(píng)論

這是每一位專業(yè)C++程序員都應(yīng)該閱讀的一本書(shū),作者經(jīng)驗(yàn)豐富,給出了很多真知灼見(jiàn)。                       ——ACCU主席Francis Glassborow

編輯推薦

ACCU主席Francis Glassborow傾力推薦傳授如何在C++中作出選擇的專家級(jí)讀本闡釋如何使用C++進(jìn)行更好編程的真知灼見(jiàn)使用大量示例代碼演示有用的編程策略

名人推薦

這是每一位專業(yè)C++程序員都應(yīng)該閱讀的一本 書(shū),作者經(jīng)驗(yàn)豐富,給出了很多真知灼見(jiàn)。 ——Francis Glassborow.ACCU主席

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    C++編程慣用法 PDF格式下載


用戶評(píng)論 (總計(jì)12條)

 
 

  •   選擇的時(shí)候沒(méi)有細(xì)看,以為是新書(shū)。譯者還花精力翻譯這么舊的書(shū) 不解啊。。
  •   還沒(méi)看完,不過(guò)看了幾章了,寫(xiě)的不錯(cuò).有些翻譯比較拗口.
  •   質(zhì)量不錯(cuò),內(nèi)容我就不評(píng)價(jià)了,各取所需。
  •   這本書(shū)與C++經(jīng)典入門(mén)書(shū)籍類似,也是挺經(jīng)典的,其中內(nèi)容不但可以讓人養(yǎng)成好的習(xí)慣,面向?qū)ο缶幊虝r(shí)更容易,而且還可以避免誤入一些爭(zhēng)議的誤區(qū),引起不必要的麻煩。
  •   講得很好。這本書(shū)中給出了很多好的編程用法,還講解了使用這些用法的緣故。值得研究!
  •   對(duì)于有一定基礎(chǔ)和經(jīng)驗(yàn)的C++程序員來(lái)說(shuō),此書(shū)值得一讀。每章最后的小結(jié)和問(wèn)題(思考)是此書(shū)最大的亮點(diǎn)。但是:這是一本1993年寫(xiě)的書(shū)?。。∮行﹥?nèi)容過(guò)時(shí)了,甚至是現(xiàn)代C++編程所不再鼓勵(lì)或已經(jīng)摒棄的做法。真搞不懂人郵出版社2012年出版這么一本舊書(shū)的目的何在!
  •   這本書(shū)02年就出版了,技術(shù)當(dāng)然不是最新的。個(gè)人感覺(jué)適合使用C++兩三年左右的讀者。書(shū)中都是一些常用的技術(shù),當(dāng)然,對(duì)于用C++進(jìn)行應(yīng)用系統(tǒng)開(kāi)發(fā)的人來(lái)說(shuō),掌握這本書(shū)的技術(shù)就足夠了。對(duì)于要寫(xiě)程序庫(kù)的人來(lái)說(shuō),掌握這本書(shū)還遠(yuǎn)遠(yuǎn)不夠。
  •   書(shū)是好書(shū),價(jià)格太貴
  •   買(mǎi)重了呢
  •   非常喜歡喝非長(zhǎng)好的一本書(shū)
  •   基礎(chǔ)不好就不要買(mǎi)此書(shū)
  •     所謂的高級(jí)程序員常用方法和技巧只不過(guò)是一些C++常識(shí)的總結(jié),做為一名C++程序員如果這些常識(shí)都做不到,不知道是否可以算是一名合格的C++程序員呢?
      如果你看了C++ primer之類的書(shū),并不敢說(shuō)自己對(duì)書(shū)中的內(nèi)容了如指掌的話,建議還是看看這本書(shū)。
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7