出版時(shí)間:2011-1 出版社:電子工業(yè)出版社 作者:(美)舒特 著,於春景 譯 頁(yè)數(shù):331 譯者:於春景
Tag標(biāo)簽:無(wú)
前言
與大師面對(duì)面(譯序) 小提琴家穆特錄制過(guò)一張唱片,收錄的是貝多芬最偉大的兩部小提琴作品 。聆聽(tīng)那張唱片,你仿佛聽(tīng)見(jiàn)貝多芬在向你傾訴他對(duì)音樂(lè)藝術(shù)的理解和感悟,為你解答小提琴音樂(lè)創(chuàng)作的每一個(gè)疑問(wèn)和困惑。為了向音樂(lè)愛(ài)好者推薦貝多芬的那兩部名作,穆特為她的那張名碟加上了一個(gè)恰如其分的標(biāo)題—— “與貝多芬面對(duì)面”?! 『仙螹ore Exceptional C++的瞬間,我的第一反應(yīng)是為這本名著也加上一個(gè)與之類似的副標(biāo)題,然后,鄭重地推薦給你。 是的,本書(shū)奉獻(xiàn)給你的是又一位大師苦心孤詣的結(jié)晶。不同的是,這位大師來(lái)自你所關(guān)注的C++程序設(shè)計(jì)領(lǐng)域。對(duì)每一位C++愛(ài)好者或C++專業(yè)程序員來(lái)說(shuō),Herb Sutter的名字應(yīng)該不會(huì)讓人感到陌生。作為ISO/ANSI C++標(biāo)準(zhǔn)委員會(huì)的委員,Herb Sutter不僅是C++程序設(shè)計(jì)領(lǐng)域公認(rèn)的專家,還是深受程序員喜愛(ài)的技術(shù)講師和作家。Herb Sutter在互聯(lián)網(wǎng)上主持的Guru of the Week專欄廣受歡迎,幾乎成為每一位C++程序員的網(wǎng)上必讀物。本書(shū)就是Guru of the Week的最新精華總結(jié)?! ”緯?shū)的主要特點(diǎn)可以反映在我為它所加的副標(biāo)題中。作為身經(jīng)百戰(zhàn)的專業(yè)程序員,而且長(zhǎng)期從事程序設(shè)計(jì)的普及教育工作,Herb Sutter最清楚程序員在提升技術(shù)功力的過(guò)程中的所想所為。他既了解初學(xué)者的疑問(wèn)和困惑,也對(duì)專業(yè)程序員日常工作中遭遇到的陷阱和易犯的錯(cuò)誤了如指掌。因而,在本書(shū)中,Herb Sutter采用了獨(dú)具匠心的“提問(wèn)/解答”的方式來(lái)指導(dǎo)你學(xué)習(xí)C++的語(yǔ)言特性;在本書(shū)的每個(gè)專題中,Herb Sutter都合理地設(shè)想出你的疑問(wèn)和困惑,又有如神助地猜到了你的(可能是錯(cuò)誤的)解答,然后給你以指點(diǎn)并呈現(xiàn)出最佳方案,最后,還提煉出解決類似問(wèn)題的一般性原則。讀了這本書(shū),你仿佛和Herb Sutter這位大師面對(duì)面地進(jìn)行了一場(chǎng)對(duì)話,親歷了他對(duì)你的指導(dǎo)和點(diǎn)撥。 關(guān)于本書(shū)的另一個(gè)特點(diǎn),我想指出的是,作為C++標(biāo)準(zhǔn)委員會(huì)的委員,Herb Sutter在本書(shū)中強(qiáng)調(diào)了C++語(yǔ)言的最新標(biāo)準(zhǔn)和最新特性,強(qiáng)調(diào)了泛型程序設(shè)計(jì)和標(biāo)準(zhǔn)庫(kù)的使用。在本書(shū)的所有示例中,Herb Sutter為我們提供的是清新的C++編程風(fēng)格和純正的現(xiàn)代C++代碼和范例?! ”緯?shū)適合的讀者對(duì)象是中高級(jí)程序員,但這并不是說(shuō)本書(shū)的內(nèi)容高不可攀。作者并不是在講述高深的語(yǔ)言特性和設(shè)計(jì)技巧,更沒(méi)有對(duì)基礎(chǔ)話題避而不談;相反,有關(guān)基礎(chǔ)知識(shí)的介紹、回顧和深化散見(jiàn)于本書(shū)的很多條款之中。只不過(guò),這些條款的內(nèi)容涉及的只是C++特性中的細(xì)節(jié),它沒(méi)有對(duì)C++的每一個(gè)特性、或每個(gè)特性中的每一個(gè)方面做全面的介紹。盡管如此,只要具備基本的C++功底和一定的程序設(shè)計(jì)經(jīng)驗(yàn),你完全可以理解和消化本書(shū)的所有內(nèi)容。由于作者進(jìn)行了巧妙的組織和精心的選材,本書(shū)每一個(gè)條款的內(nèi)容都獨(dú)立而完整,它可以讓你在深入學(xué)習(xí)C++語(yǔ)言特性時(shí)事半功倍?! ∫蚨蚁嘈?,無(wú)論是有一定基礎(chǔ)的C++愛(ài)好者,還是身經(jīng)百戰(zhàn)的專業(yè)程序員,本書(shū)都將為你帶來(lái)收獲;在你的C++程序設(shè)計(jì)生涯中,它將是你的案頭不可或缺的C++專著之一?! ≈轮x 能夠翻譯完這本書(shū),我首先要感謝我的妻子妞妞和兒子斗斗,是你們給了我工作的動(dòng)力,長(zhǎng)期以來(lái)我都未能陪伴在你們身邊,你們不但給了我寬容,還依然給我不變的愛(ài)和支持。感謝yeka,是你促成了我和華中科技大學(xué)出版社的愉快合作,并給了我最直接的幫助。感謝肖翔對(duì)譯稿進(jìn)行的認(rèn)真審校,他在審閱過(guò)程中的真知灼見(jiàn)令我受益匪淺。感謝moonsea,即使是在我工作的時(shí)候,你也會(huì)不時(shí)地?cái)_亂我的心緒,迫使我無(wú)法繼續(xù)工作—— 正因?yàn)檫@樣,我才得以不時(shí)地逃離枯燥的鍵盤和屏幕,偷得一刻閑暇。感謝作者Herb Sutter,在翻譯本書(shū)的過(guò)程中,你對(duì)我的每一次請(qǐng)教都給予了耐心的解答—— 和大師的直接對(duì)話讓我如沐春風(fēng)。最后,感謝互聯(lián)網(wǎng)上所有給予我?guī)椭凸膭?lì)的朋友們,lostmouse(我在專業(yè)論壇上的網(wǎng)名)希望,這本譯作能成為我對(duì)你們最好的回饋;我還希望,你們能一如既往地幫助我,指出我在這本譯作中留下的每一個(gè)疏漏和錯(cuò)誤。感謝你們! 於春景(lostmouse) 2002年5月于深圳蛇口 序 怎樣才能成為專家?在我涉足過(guò)的所有領(lǐng)域,答案都一樣: 1.掌握基礎(chǔ)知識(shí)。 2.將相同的內(nèi)容再學(xué)習(xí)一遍,但這一次,請(qǐng)將你的注意力集中在細(xì)節(jié)上—— 這些細(xì)節(jié)的重要性,你頭一次可能并沒(méi)有認(rèn)識(shí)到?! ∪绻暨x了合適的細(xì)節(jié)來(lái)學(xué)習(xí),并且徹底掌握了它們,進(jìn)而達(dá)到不再為之困惑的程度,你就離成為專家為期不遠(yuǎn)了。然而,除非已經(jīng)成為了專家,你又怎么知道該挑選哪些細(xì)節(jié)來(lái)學(xué)習(xí)呢?如果有人已經(jīng)為你挑選了合適的細(xì)節(jié),你就會(huì)學(xué)得更快,并且樂(lè)在其中?! ∨e個(gè)例子,我曾經(jīng)參加過(guò)一次攝影學(xué)習(xí)班,授課的是一位很不錯(cuò)的攝影師,名叫Fred Picker。他告訴我們,攝影中僅有的兩個(gè)困難環(huán)節(jié)是:照相機(jī)該擺放在哪兒、何時(shí)該按快門。然后,他花了學(xué)習(xí)班的大部分時(shí)間教我們有關(guān)曝光、加工和沖印的技術(shù)細(xì)節(jié)—— 只有完全了解了這些細(xì)節(jié),我們才能夠很好地掌握攝影;而只有很好地掌握了攝影,我們?nèi)リP(guān)注那兩個(gè)“困難的”環(huán)節(jié)才有意義?! W(xué)習(xí)C++編程的細(xì)節(jié),有一個(gè)特別引人入勝的方式,即:盡力去回答有關(guān)C++編程的問(wèn)題。例如: f(a++);和f(a);++a;的效果一樣嗎? 可以用迭代器去改變set的內(nèi)容嗎? 假設(shè)你正在使用一個(gè)名為v的vector,它占用的內(nèi)存數(shù)量已經(jīng)增長(zhǎng)到讓你 擔(dān)心的程度。于是你會(huì)想到去清除這個(gè)vector,將內(nèi)存返還給系統(tǒng)。調(diào)用v.clear()可以完成這一使命嗎? 你可能已經(jīng)猜到,這些表面上看起來(lái)顯而易見(jiàn)的問(wèn)題,其答案一定是No—— 否則我也不會(huì)把它們提出來(lái)—— 但你知道答案為什么是No嗎?你確信? 本書(shū)回答了這些問(wèn)題。此外,它還回答了其他許多精心挑選的問(wèn)題,這些問(wèn)題針對(duì)的都是看起來(lái)很平常的程序。沒(méi)有多少書(shū)籍具有本書(shū)這樣的特色—— 當(dāng)然,它的前任Exceptional C++除外。有許多自封“高級(jí)”的C++書(shū)籍,其實(shí)它們中的大多數(shù)要么只是針對(duì)專項(xiàng)主題進(jìn)行了討論—— 如果你只是想精通那些特定主題,而不是想深入研究日常編程中遇到的問(wèn)題,那些書(shū)還不錯(cuò)—— 要么只是用“高級(jí)”這個(gè)詞來(lái)引誘讀者而已?! ∫坏┩笍乩斫饬诉@些問(wèn)題和它們的答案,你在編程時(shí)就不必勞神于細(xì)節(jié),你就盡可以將注意力集中在真正需要盡力解決的問(wèn)題上?! ndrew Koenig 2001年6月 前 言 古希臘哲學(xué)家蘇格拉底通過(guò)向?qū)W生提問(wèn)進(jìn)行教學(xué)—— 他用那些精心構(gòu)思的問(wèn)題來(lái)指導(dǎo)學(xué)生,啟發(fā)他們從已知得出結(jié)論;讓他們認(rèn)識(shí)到自己正在學(xué)習(xí)的事物如何相互聯(lián)系,這些事物與他們已有的知識(shí)又如何聯(lián)系。這種教學(xué)法如此出名,以致于我們今天把它專稱為“蘇格拉底問(wèn)答法”。如果讓我們也從學(xué)生的角度來(lái)看問(wèn)題,蘇格拉底的教學(xué)法將引導(dǎo)我們,促使我們思考,幫助我們聯(lián)系并應(yīng)用現(xiàn)有的知識(shí)去獲取新知?! ”緯?shū)如同它的前任Exceptional C++ [Sutter00]一樣,借鑒了蘇格拉底的教學(xué)法。它假設(shè)你目前正身處C++產(chǎn)品軟件開(kāi)發(fā)的某個(gè)領(lǐng)域,采用“提問(wèn)/解答”的形式指導(dǎo)你如何有效地使用標(biāo)準(zhǔn)C++語(yǔ)言及其標(biāo)準(zhǔn)庫(kù)—— 尤其是,如何運(yùn)用現(xiàn)代C++中有效的軟件工程理論來(lái)解決問(wèn)題。這些問(wèn)題大多直接取自于我和其他人在編寫(xiě)產(chǎn)品級(jí)C++代碼時(shí)積累的經(jīng)驗(yàn),以所謂的“疑問(wèn)”和“難題”的形式呈現(xiàn)給你?!耙蓡?wèn)”的目的在于幫助你從現(xiàn)有的知識(shí)和剛剛學(xué)到的知識(shí)中得出結(jié)論,并展現(xiàn)它們之間如何相互關(guān)聯(lián)?!半y題”則向你展示如何去分析C++設(shè)計(jì)和編程上的論題—— 某些是常見(jiàn)的論題,某些并不常見(jiàn);某些是淺顯的論題,某些則比較深?yuàn)W;還有一些論題之所以拿來(lái)討論,是因?yàn)椤?唔,僅僅因?yàn)椤?它們很有趣。 本書(shū)覆蓋C++的方方面面。但我沒(méi)有說(shuō)它觸及C++的每一個(gè)細(xì)節(jié)—— 那將需要更多的篇幅—— 我是在說(shuō),本書(shū)提取了C++語(yǔ)言和標(biāo)準(zhǔn)庫(kù)構(gòu)件中的廣泛素材,向你展示看似毫不相關(guān)的個(gè)體如何被綜合利用起來(lái),構(gòu)成解決常見(jiàn)問(wèn)題的新穎方案。它還展示了這些素材中看似毫不相關(guān)的那些部分自身是如何相互關(guān)聯(lián)的—— 即使有時(shí)你不希望它們有如此的關(guān)聯(lián);以及,應(yīng)當(dāng)如何處理這些關(guān)聯(lián)。你將在此找到關(guān)于模板與名字空間、異常與繼承、健壯類的設(shè)計(jì)與設(shè)計(jì)模式、泛型程序設(shè)計(jì)與宏的使用技巧等內(nèi)容—— 這些內(nèi)容絕不是雜亂地堆砌在一起,而是作為連貫的條款,向你展示現(xiàn)代C++中這些組成部分之間的相互聯(lián)系?! 『螢椤癕ore”? More Exceptional C++起步于Exceptional C++駐足之處。本書(shū)繼承了前任的傳統(tǒng):它提供了新的內(nèi)容,這些內(nèi)容被組織為短小的條款,形成有主題的章節(jié)。前一本書(shū)的讀者會(huì)在此發(fā)現(xiàn)一些熟悉的章節(jié)和主題,如異常安全、泛型編程、內(nèi)存管理技術(shù)等,但如今它們包含了新的內(nèi)容。這兩本書(shū)在結(jié)構(gòu)和主題而非內(nèi)容上有重疊之處。 More Exceptional C++還有何不同之處?本書(shū)特別強(qiáng)調(diào)了泛型編程技術(shù)以及如何有效地使用C++標(biāo)準(zhǔn)庫(kù),并涉及了如traits和predicates這樣的重要技術(shù)。有幾個(gè)條款還深入分析了使用標(biāo)準(zhǔn)容器和算法時(shí)應(yīng)該牢記的要點(diǎn)—— 這其中的許多要點(diǎn),我在別的地方還沒(méi)見(jiàn)到它們被提及過(guò)。此外,一個(gè)新的章節(jié)和兩個(gè)附錄集中討論了單線程和多線程環(huán)境下的優(yōu)化議題—— 對(duì)于編寫(xiě)產(chǎn)品級(jí)代碼的軟件開(kāi)發(fā)商來(lái)說(shuō),這些議題在目前比以往任何時(shí)候都更具實(shí)用價(jià)值。 本書(shū)的大多數(shù)條款最初出現(xiàn)于互聯(lián)網(wǎng)和雜志專欄,尤其是Guru of the Week的GotW專題31到62,以及我曾為C/C++ Users Journal、Dr.Dobb’s Journal、以前的C++ Report和其他出版物撰寫(xiě)的印刷版專欄和文章中。自最初版本出現(xiàn)以來(lái),本書(shū)的內(nèi)容歷經(jīng)大量的修訂、增補(bǔ)、校正和更新,因而本書(shū)(連同它在www.gotw.ca上不可缺少的勘誤表)可以被認(rèn)為是那些原始材料的最新正式版本?! ∧銘?yīng)該知道的 我認(rèn)為你已經(jīng)了解了C++的基礎(chǔ)知識(shí)。如果不是這樣,建議你從一本好的C++入門和概念性的書(shū)籍開(kāi)始,最好選擇一本經(jīng)典的大部頭著作,如Bjarne Stroustrup的The C++ Programming Language [Stroustrup00],或者是Stan Lippman與Josée Lajoie合著的C++ Primer第三版 [Lippman98]。然后,一定要挑選一本指導(dǎo)編程風(fēng)格的書(shū),例如Scott Meyers經(jīng)典的Effective C++套書(shū)[Meyers96][Meyers97]。我發(fā)現(xiàn)這套書(shū)有基于瀏覽器閱讀的CD版本[Meyers99],十分方便好用?! ∪绾伍喿x本書(shū) 本書(shū)的每個(gè)條款以一個(gè)難題或疑問(wèn)的形式呈現(xiàn),它帶有一條介紹性的標(biāo)題,類似下面這樣: 條款#:條款的題目 難度:Ⅹ 條款的題目和難度等級(jí)提示你將要面對(duì)的是何種難題。注意,難度等級(jí)是我的主觀評(píng)斷,我只是猜想大多數(shù)人碰到每個(gè)問(wèn)題時(shí)會(huì)覺(jué)得有多難,所以你很可能會(huì)發(fā)現(xiàn)一個(gè)難度為“7”的問(wèn)題對(duì)你來(lái)說(shuō)比某個(gè)難度為“5”的問(wèn)題還容易。自從寫(xiě)作Exceptional C++以來(lái),我不時(shí)收到一些電子郵件,說(shuō)“某某條款比你說(shuō)的要容易(難)”。面對(duì)同一條款,不同的人認(rèn)為“更容易”或“更難”是很自然的。難度等級(jí)隨人而定;對(duì)你來(lái)說(shuō),任何條款的實(shí)際難度真正取決于你的知識(shí)和經(jīng)驗(yàn),它對(duì)別人來(lái)說(shuō)會(huì)相對(duì)更容易或更難。但大多數(shù)情況下你會(huì)發(fā)現(xiàn),難度分級(jí)是一種不錯(cuò)的經(jīng)驗(yàn)方法,它指引給你的和你所認(rèn)為的大致相當(dāng)。 你可能打算從頭至尾閱讀整本書(shū)。這很好,但不一定非如此不可。你可能會(huì)集中閱讀一個(gè)章節(jié)中的所有條款,因?yàn)槟銓?duì)那個(gè)章節(jié)的議題特別感興趣。這也不錯(cuò)。書(shū)中有一些條款被我稱為“短系列”,因?yàn)樗鼈兩婕暗氖窍嚓P(guān)的問(wèn)題,你會(huì)看到這些條款用“之一”、“之二”等來(lái)標(biāo)識(shí)。除了這些“短系列”外,其余的條款都是很獨(dú)立的。在本書(shū)的條款中還包含很多交叉索引,有些索引還參考到Exceptional C++,你可以遵循這些索引隨意跳轉(zhuǎn)閱讀。我唯一要告訴你的是,制作“短系列”是為了讓它們成為一組以便于連續(xù)閱讀,除此之外,如何閱讀,選擇權(quán)在你?! ∶挚臻g、typename、URL引用以及其他約定 我在本書(shū)中提出了不少建議,但我不會(huì)指引你去做一些連我自己都沒(méi)做過(guò)的事。這包括整本書(shū)里我在我自己的示例代碼中所做的那些事。我也會(huì)遵循程序設(shè)計(jì)的現(xiàn)有習(xí)慣和現(xiàn)代風(fēng)格,即使有時(shí)候這樣做不會(huì)對(duì)事情帶來(lái)本質(zhì)上的差異?! £P(guān)于這一點(diǎn),說(shuō)說(shuō)名字空間。在本書(shū)的代碼示例中,如果你在一個(gè)例子中看到了一個(gè)文件范圍內(nèi)的using指令,又在幾頁(yè)或幾個(gè)條款后另外的例子中看到了一個(gè)函數(shù)范圍內(nèi)的using指令,這其實(shí)沒(méi)有什么更深層的含義,只是說(shuō)明在那些特定情況下,這樣做是合理的,而且從美學(xué)的角度來(lái)看,也讓我感到美觀。至于名字空間的基本知識(shí),請(qǐng)參閱條款40。在書(shū)寫(xiě)代碼時(shí),如果想強(qiáng)調(diào)我所指的是標(biāo)準(zhǔn)中的東西,我會(huì)用std::來(lái)修飾標(biāo)準(zhǔn)庫(kù)名稱。這一點(diǎn)確立后,我往往會(huì)轉(zhuǎn)而使用不帶修飾的名稱。 再說(shuō)說(shuō)模板參數(shù)的聲明。我時(shí)常碰到一些人,他們認(rèn)為寫(xiě)class而不寫(xiě)typename是過(guò)時(shí)的做法,即使這二者沒(méi)有功能上的不同、而且C++標(biāo)準(zhǔn)本身也在到處使用class。純粹出于代碼書(shū)寫(xiě)風(fēng)格方面的考慮,并且為了強(qiáng)調(diào)本書(shū)所討論的是當(dāng)今現(xiàn)代的C++,在聲明模板參數(shù)時(shí),我也已經(jīng)轉(zhuǎn)到使用typename而不使用class。唯一的例外是條款33中的一處,在那兒我直接引用了標(biāo)準(zhǔn)中的代碼—— 標(biāo)準(zhǔn)用的是class,我就隨它去了?! 〕俏颐鞔_地稱某段代碼是“完整程序”,否則一般不是。請(qǐng)記住,這些示例通常只是代碼片段或者只是程序的一部分,它們不會(huì)就這樣孤立地通過(guò)編譯。為了用我所提供的程序片段構(gòu)成完整程序,你一般還得做一些顯而易見(jiàn)的添加工作?! ∽詈?,說(shuō)說(shuō)URL?;ヂ?lián)網(wǎng)上,事事在變。特別是,你無(wú)法掌控的那些事物在變。這樣一來(lái),在印刷書(shū)籍上隨意發(fā)布URL就成為了一種真正的痛苦:不用等到一本書(shū)在你的書(shū)桌上躺上五年,在它還沒(méi)送到印刷廠之前,那些URL可能就已經(jīng)過(guò)時(shí)了。本書(shū)中,當(dāng)我引用其他人的文章或網(wǎng)站時(shí),我是通過(guò)我自己的網(wǎng)站www.gotw.ca上的URL來(lái)實(shí)現(xiàn)的。這個(gè)網(wǎng)站我可以自己控制,它包含的只不過(guò)是直接指向?qū)嶋H網(wǎng)頁(yè)的重定向鏈接。如果你發(fā)現(xiàn)印刷在本書(shū)中的某個(gè)鏈接不再可用,請(qǐng)發(fā)電子郵件告訴我,我會(huì)更新這個(gè)鏈接,讓它指向新的網(wǎng)頁(yè)位置(如果我能夠重新找到這個(gè)網(wǎng)頁(yè)),或者標(biāo)示這個(gè)網(wǎng)頁(yè)已經(jīng)不再存在(如果我無(wú)法找到這個(gè)網(wǎng)頁(yè))。無(wú)論哪種方式,本書(shū)的URL將保持最新—— 盡管在當(dāng)今互聯(lián)網(wǎng)世界里,印刷傳媒是這樣舉步維艱。唉! 致謝 深切感謝叢書(shū)編輯Bjarne Stroustrup,還有Debbie Lafferty、Tyrrell Albaugh、Chanda Leary-Coutu、Charles Leddy、Curt Johnson,以及Addison-Wesley出版社的其他成員,感謝他們?cè)谶@個(gè)項(xiàng)目中的鼎力協(xié)助和堅(jiān)持不懈。很難想象還能找到比他們更棒的人一起共事,他們的熱情和協(xié)作使這本書(shū)完全達(dá)到了我預(yù)想的目標(biāo)?! ×硗庵档酶兄x和稱贊的是審閱過(guò)本書(shū)的許多專家。對(duì)本書(shū)的許多內(nèi)容,他們毫無(wú)保留地提出了深刻的見(jiàn)解和犀利的批評(píng),而這些見(jiàn)解和批評(píng)是那樣一針見(jiàn)血。正是因?yàn)樗麄兊呐Γ闶种械倪@本書(shū)比初稿更完整、更易于理解、更實(shí)用。特別感謝(大致以我收到審閱意見(jiàn)的順序)Scott Meyers、Jan Christiaan van Winkel、Steve DewHurst、Dennis Mancl、Jim Hyslop、Steve Clamage、Kevlin Henney、Andrew Koenig、Patrick McKillen,以及一些不知名的審閱者。書(shū)中遺留的所有錯(cuò)誤、疏忽和歧義都是因?yàn)槲遥撬麄??! ∽詈螅瑢⑺械母兄x獻(xiàn)給我的家人和朋友—— 無(wú)論是在這本書(shū)的寫(xiě)作和出版期間,還是其他任何時(shí)候,他們都一直陪伴在我身邊?! erb Sutter 2001年6月于多倫多
內(nèi)容概要
對(duì)C++程序員來(lái)說(shuō),ISO/ANSI C++標(biāo)準(zhǔn)的問(wèn)世標(biāo)志著一個(gè)新紀(jì)元的開(kāi)始。C++標(biāo)準(zhǔn)為程序設(shè)計(jì)提供了很多新的便利和可能,但要想在如此眾多的信息中挖掘到其中的精髓,現(xiàn)實(shí)世界中的程序員缺少足夠的時(shí)間。本書(shū)針對(duì)一定的主題,為程序員提供了簡(jiǎn)明扼要的指導(dǎo),從而將學(xué)習(xí)時(shí)間和疑惑減至最少。本書(shū)內(nèi)容包括泛型程序設(shè)計(jì)與C++標(biāo)準(zhǔn)庫(kù)、優(yōu)化與性能、異常安全議題及技術(shù)、繼承與多態(tài)、內(nèi)存及資源管理、自由函數(shù)與宏等?! ”緯?shū)內(nèi)容全面豐富,論述翔實(shí)清晰,作者權(quán)威且經(jīng)驗(yàn)豐富,是C++程序員的必備讀物。
作者簡(jiǎn)介
Herb Sutter
Herb Sutter是公認(rèn)的C++軟件開(kāi)發(fā)專家,他同時(shí)定期地在世界各地的會(huì)議上應(yīng)邀座淡 作為130多篇技術(shù)文章的作者,Herb同時(shí)擔(dān)任ISO/ANSI C++標(biāo)準(zhǔn)委員會(huì)的秘書(shū)、C/C++Users雜志的特約編輯和專欄作家。以及C++Report的前主編一在主要的C++屠言的Internet新聞組comp,1ang,c++,moderated上,發(fā)表有Herb廣為流傳的“C++Guru of the Week”系列,該新聞組白1995年成訌以來(lái),一直山Herb擔(dān)任主持,聯(lián)系作者,清垂洶
書(shū)籍目錄
與大師面對(duì)面(譯序)序前言泛型程序設(shè)計(jì)與C++標(biāo)準(zhǔn)庫(kù) 條款1:流 條款2:Predicates,之一:remove()刪除了什么? 條款3:Predicates,之二:狀態(tài)帶來(lái)的問(wèn)題 條款4:可擴(kuò)充的模板:使用繼承還是traits? 條款5:typename 條款6:容器、指針和“不是容器的容器” 條款7:使用vector和deque 條款8:使用set和map 條款9:等同的代碼嗎? 條款10:模板特殊化與重載 條款11:Mastermind優(yōu)化與性能 條款12:內(nèi)聯(lián) 條款13:緩式優(yōu)化,之一:一個(gè)普通的舊式String 條款14:緩式優(yōu)化,之二:引入緩式優(yōu)化 條款15:緩式優(yōu)化,之三:迭代器與引用 條款16:緩式優(yōu)化,之四:多線程環(huán)境異常安全議題及技術(shù) 條款17:構(gòu)造函數(shù)失敗,之一:對(duì)象生命期 條款18:構(gòu)造函數(shù)失敗,之二:吸收異常? 條款19:未捕獲的異?!l款20:未管理指針存在的問(wèn)題,之一:參數(shù)求值 條款21:未管理指針存在的問(wèn)題,之二:使用auto~tr7 條款22:異常安全與類的設(shè)計(jì),之一:復(fù)制賦值 條款23:異常安全與類的設(shè)計(jì),之二:繼承繼承與多態(tài) 條款24:為什么要使用多繼承? 條款25:模擬多繼承 條款26:多繼承與連體雙嬰問(wèn)題 條款27: (非)純虛函數(shù) 條款28:受控的多態(tài)內(nèi)存及資源管理 條款29:使用auto_ptr 條款30:智能指針成員,之一:auto_ptr存在的問(wèn)題 條款31:智能指針成員,之二:設(shè)計(jì)Va1uePtr自由函數(shù)與宏 條款32:遞歸聲明 條款33:模擬嵌套函數(shù) 條款34:預(yù)處理宏 條款35:宏定義雜項(xiàng)議題 條款36:初始化 條款37:前置聲明 條款38:typedef 條款39:名字空間,之一:using聲明和using指令 條款40:名字空間,之二:遷徙到名字空間后記參考文獻(xiàn)索引
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
More Exceptional C++(中文版) PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版