出版時(shí)間:2012-10 出版社:莫瑞 (Robert B. Murray) 人民郵電出版社 (2012-10出版) 作者:莫瑞 頁(yè)數(shù):228
Tag標(biāo)簽:無
內(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í)際開發(fā)中的代碼作為示例,向讀者展示了那些有用的編程策略,并對(duì)那些有害的做法進(jìn)行了警示。為了幫助讀者更好地理解,在每一章結(jié)束前,在該章中介紹過的主要內(nèi)容都被放到了一個(gè)列表中,此外,書中還給出了一些問題來激勵(lì)讀者們進(jìn)行更多的思考和討論?! 禖++編程慣用法:高級(jí)程序員常用方法和技巧》適合具有一定C++編程經(jīng)驗(yàn)的程序員和項(xiàng)目經(jīng)理閱讀,也適合對(duì)C++編程的高級(jí)主題感興趣的讀者參考。
作者簡(jiǎn)介
Robert B. Murray在著作本書時(shí)是Quantitative Data公司中負(fù)責(zé)軟件工程的副總裁,1該公司的業(yè)務(wù)包括向世界500強(qiáng)公司提供面向?qū)ο蟮能浖鉀Q方案.a在此之前,1他曾經(jīng)供職于AT&T貝爾實(shí)驗(yàn)室,并在那里參與了C++語言、編譯器和庫(kù)的開發(fā)。他還是The C++ Report的創(chuàng)刊編輯。從1987年起,他就開始在學(xué)術(shù)會(huì)議和專業(yè)會(huì)議上講授C++語言。
書籍目錄
第1章抽象 1.1 有關(guān)電話號(hào)碼的抽象模型 1.2抽象模型間的關(guān)系 1.3請(qǐng)考慮邊界條件 1.4使用CRC卡片來輔助設(shè)計(jì) 1.5小結(jié) 1.6問題 第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 問題 第3章句柄 3.1一個(gè)String類 3.2使用計(jì)數(shù)器來避免多份拷貝 3.3 避免進(jìn)行重編譯:Cheshire Cat 3.4使用句柄來隱藏設(shè)計(jì) 3.5多種實(shí)現(xiàn) 3.6作為對(duì)象的句柄 3.7綜述 3.8小結(jié) 3.9問題 第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問題 第5章多重繼承 5.1作為交集的多重繼承 5.2虛基類 5.3一些有關(guān)多重繼承的細(xì)節(jié)問題 5.4小結(jié) 5.5問題 第6章考慮繼承的設(shè)計(jì) 6.1被保護(hù)的接口 6.2我們的設(shè)計(jì)是否應(yīng)該考慮到繼承? 6.3一些為繼承所做的設(shè)計(jì)的例子 6.4結(jié)論 6.5小結(jié) 6.6問題 第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問題 第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問題 第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問題 第10章異常 10.1一個(gè)負(fù)面的聲明 10.2為什么需要異常? 10.3一個(gè)異常的例子 10.4異常只應(yīng)該用來表述異常情況 10.5理解異常 10.6責(zé)任評(píng)估 10.7設(shè)計(jì)異常對(duì)象 10.8小結(jié) 10.9問題 第11章向C++移植 11.1選擇使用C++ 11.2采用C++ 11.3設(shè)計(jì)和實(shí)現(xiàn) 11.4開發(fā)一個(gè)堅(jiān)實(shí)的基礎(chǔ) 11.5相關(guān)的思考 11.6小結(jié) 11.7問題
章節(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ì)象刪除。 這種做法既有好處,也有壞處。雖說對(duì)一個(gè)使用了計(jì)數(shù)器的指針進(jìn)行的修改涉及多個(gè)計(jì)數(shù)器的改動(dòng)(見7.4.2的代碼),對(duì)一個(gè)被收集的指針進(jìn)行修改速度還是和對(duì)一個(gè)一般指針進(jìn)行修改的速度是一樣的。在天平的另一端,對(duì)指針以及被指向?qū)ο蟮膭?chuàng)建和刪除則要費(fèi)時(shí)得多,因?yàn)檫@些操作必須要更新用來記錄已有指針和對(duì)象的數(shù)據(jù)結(jié)構(gòu)。應(yīng)用程序的設(shè)計(jì)者必須決定在什么時(shí)候來運(yùn)行垃圾收集子程序。對(duì)于實(shí)時(shí)系統(tǒng)來說,在一個(gè)請(qǐng)求被響應(yīng)前,我們可能得不到足夠的時(shí)間來完成我們的垃圾收集操作,這也會(huì)使得我們的垃圾收集器的邏輯變得復(fù)雜起來。 然而,如果程序中的指針的值經(jīng)常發(fā)生改變,而指針本身和對(duì)象并不會(huì)經(jīng)常被創(chuàng)建和摧毀,那么使用這種方案就可以給我們帶來最佳的性能。 對(duì)于那些外界不能獲得的循環(huán)指向?qū)ο髞碚f,我們還是無法收集它們。不過我們可以通過對(duì)垃圾收集器進(jìn)行改進(jìn),增加一個(gè)根指針來應(yīng)付這種情況。如果所有的“活著的”對(duì)象都是要么被根指針?biāo)赶颍幢涣硗庖粋€(gè)“活著的”對(duì)象中的指針?biāo)赶?,那么垃圾收集器就可以從根指針開始對(duì)所有后續(xù)的指針進(jìn)行遍歷,為每一個(gè)被指向的對(duì)象進(jìn)行標(biāo)注。由于垃圾收集器必須能夠找到對(duì)象中的所有指針,我們很難構(gòu)建一個(gè)通用的庫(kù)來支持這種垃圾收集方式。在實(shí)際應(yīng)用中,我們通常的做法是:為某個(gè)類手工創(chuàng)建一個(gè)單獨(dú)的函數(shù)來處理它。 9.4.3 Arena arena是用來管理內(nèi)存的最簡(jiǎn)單方案之一。但是它們只適用于某些特定的應(yīng)用程序。在這些程序中,每個(gè)對(duì)象都是在arena中創(chuàng)建的。在后期,當(dāng)arena被清空時(shí),所有在arena中的對(duì)象都會(huì)被刪除。 例如,我們假設(shè)有一個(gè)C++的解析器,它會(huì)去解析一系列的文件,在某個(gè)文件中都會(huì)包含一系列的外部聲明。在解析過程中,解析器可能會(huì)創(chuàng)建一系列的符號(hào)表用來表示解析中碰到的名字。解析器的作者可能會(huì)認(rèn)為,函數(shù)中聲明的符號(hào)在離開函數(shù)后就將變得沒有價(jià)值,可以被丟棄了:但對(duì)于有著文件范圍屬性的符號(hào)來說,在文件被完整解析之前,它都不能被丟棄。
媒體關(guān)注與評(píng)論
這是每一位專業(yè)C++程序員都應(yīng)該閱讀的一本書,作者經(jīng)驗(yàn)豐富,給出了很多真知灼見。 ——ACCU主席Francis Glassborow
編輯推薦
ACCU主席Francis Glassborow傾力推薦傳授如何在C++中作出選擇的專家級(jí)讀本闡釋如何使用C++進(jìn)行更好編程的真知灼見使用大量示例代碼演示有用的編程策略
名人推薦
這是每一位專業(yè)C++程序員都應(yīng)該閱讀的一本 書,作者經(jīng)驗(yàn)豐富,給出了很多真知灼見。 ——Francis Glassborow.ACCU主席
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載