出版時間:2011-1 出版社:電子工業(yè)出版社 作者:梅耶 頁數(shù):317 譯者:侯捷
Tag標簽:無
前言
C++ 是一門難學易用的語言! C++ 的難學,不僅在其廣博的語法、語法背后的語義、語義背后的深層思維、深層思維背后的對象模型;C++ 的難學,還在于它提供了4種不同(相輔相成)的編程思維模型:procedural-based,object-based,object-oriented,generic paradigm?! ∈郎蠜]有白吃的午餐。又要有效率,又要有彈性,又要前瞻望遠,又要回溯相容,又要能治大國,又要能烹小鮮,學習起來當然就不可能太簡單?! ≡谌绱她嫶髲碗s的機制下,萬千使用者前赴后繼的動力是:一旦學成,妙用無窮?! ++ 相關書籍之多,車載斗量,如天上繁星,如過江之鯽。廣博如四庫全書者有之(The C++ Programming Language、C++ Primer),深奧如重山復水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),細說歷史者有之(The Design and Evolution of C++, Ruminations on C++),獨沽一味者有之(Polymorphism in C++, Genericity in C++),獨樹一幟者有之(Design Patterns, Large Scale C++ Software Design, C++ FAQs),程序庫大全有之(The C++ Standard Library),另辟蹊徑者有之(Generic Programming and the STL),工程經(jīng)驗之累積亦有之(Effective C++, More Effective C++, Exceptional C++)?! ∵@其中,“工程經(jīng)驗之累積”對已具 C++ 相當基礎的程序員而言,有著致命的吸引力與立竿見影的幫助。Scott Meyers 的Effective C++ 和 More Effective C++ 是此類佼佼,Herb Sutter 的 Exceptional C++ 則是后起之秀。 這類書籍的一個共同特色是輕薄短小,并且高密度地納入作者浸淫于 C++/OOP 領域多年而廣泛的經(jīng)驗。它們不但開擴讀者的視野,也為讀者提供各種 C++/OOP 常見問題或易犯錯誤的解決模型。某些小范圍主題諸如“在base classes 中使用 virtual destructor”、“令operator= 傳回 *this 的 reference”,可能在百科型 C++ 語言書籍中亦曾概略提過,但此類書籍以深度探索的方式,讓我們了解問題背后的成因、最佳的解法,以及其他可能的牽扯。至于大范圍主題,例如smart pointers,reference counting,proxy classes,double dispatching,基本上已屬design patterns的層級! 這些都是經(jīng)驗的累積和心血的結晶! 我很高興將以下兩本優(yōu)秀書籍,規(guī)劃為一個系列,以鄭重的形式呈現(xiàn)給您: 1.Effective C++ 2/e, by Scott Meyers, AW 1998 2.More Effective C++, by Scott Meyers, AW 1996 本書不但與英文版頁頁對譯,保留索引,并加上譯注、交叉索引 、讀者服務 ?! ∵@套書將對于您的程序設計生涯帶來重大幫助。翻譯這套書籍的過程中,我感覺來自技術體會上的極大快樂。我祈盼(并相信)您在閱讀此書時擁有同樣的心情。
內(nèi)容概要
較少,頁數(shù)倒是多了一些,原因是這次選材比“第一集”更高階,尤其是第5章。Meyers將此章命名為技術(techniques),并明白告訴你,其中都是一些patterns,例如virtual constructors,smart pointers,reference counting,proxy classes,double dispatching……這一章的每個條款篇幅都達15~30 頁之多,實在讓人有“山重水復疑無路,柳暗花明又一村”之嘆。 雖然出版年代稍嫌久遠,但本書并沒有第2版,原因是當其出版之時(1996),C++ Standard已經(jīng)幾乎定案,本書即依當時的標準草案而寫,其與現(xiàn)今的C++ 標準規(guī)范幾乎相同。而且可能變化的幾個彈性之處,Meyers也都有所說明與提示。讀者可以登錄作者提供的網(wǎng)址,看看上下兩集的勘誤與討論(數(shù)量之多,令人驚恐。幸好多是技術討論或文字斟酌,并沒有什么重大誤失)。
作者簡介
作者:(美國)梅耶(Scott Meyers) 譯者:侯捷Scott Meyers,世界頂級的C++軟件開發(fā)技術權威之一。他是兩本暢銷書Effective C++和More Effective C++的作者,以前曾經(jīng)是C++ Report的專欄作家。他經(jīng)常為C/C++ Users Journal和Dr. Dobb's Journal撰稿,也為全球范圍內(nèi)的客戶做咨詢活動。他也是Advisory Boards for NumeriX LLC和InfoCruiser公司的成員。他擁有Brown University的計算機科學博士學位。侯捷,集計算機技術讀物之著、澤、評于一身,足《多態(tài)與虛擬》和《STL源碼剖析》的作者,《Run!Pc》雜志、《程序員》雜志的知名專欄作家,也是極其號召力的大學教師與研討會講師。他于1989年獲得中國臺灣清華大學動機系碩士學位。
書籍目錄
譯序(侯捷)導讀(Introduction)基礎議題(Basics) 條款1:仔細區(qū)別 pointers 和 references Distinguish between pointers and references. 條款2:最好使用 C++ 轉(zhuǎn)型操作符 Prefer C++-style casts. 條款3:絕對不要以多態(tài)(polymorphically)方式處理數(shù)組 Never treat arrays polymorphically. 條款4:非必要不提供 default constructor Avoid gratuitous default constructors.操作符(Operators) 條款5:對定制的“類型轉(zhuǎn)換函數(shù)”保持警覺 Be wary of user-defined conversion functions. 條款6:區(qū)別 increment/decrement 操作符的 前置(prefix)和后置(postfix)形式 Distinguish between prefix and postfix forms of increment and decrement operators. 條款7:千萬不要重載&&,||和, 操作符 Never overload &&, ||, or ,. 條款8:了解各種不同意義的 new 和 delete Understand the different meanings of new and delete 異常(Exceptions) 條款9:利用 destructors 避免泄漏資源 Use destructors to prevent resource leaks. 條款10:在 constructors 內(nèi)阻止資源泄漏(resource leak) Prevent resource leaks in constructors. 條款11:禁止異常(exceptions)流出 destructors 之外 Prevent exceptions from leaving destructors. 條款12:了解“拋出一個 exception”與“傳遞一個參數(shù)” 或“調(diào)用一個虛函數(shù)”之間的差異61 Understand how throwing an exception differs from passing a parameter or calling a virtual function. 條款13:以 by reference 方式捕捉 exceptions Catch exceptions by reference. 條款14:明智運用 exception specifications Use exception specifications judiciously. 條款15:了解異常處理(exception handling)的成本 Understand the costs of exception handling.效率(Efficiency) 條款16:謹記 80-20 法則 Remember the 80-20 rule. 條款17:考慮使用 lazy evaluation(緩式評估) Consider using lazy evaluation. 條款18:分期攤還預期的計算成本 Amortize the cost of expected computations. 條款19:了解臨時對象的來源 Understand the origin of temporary objects. 條款20:協(xié)助完成“返回值優(yōu)化(RVO)” Facilitate the return value optimization. 條款21:利用重載技術(overload)避免隱式類型轉(zhuǎn)換(implict type conversions) Overload to avoid implicit type conversions. 條款22:考慮以操作符復合形式(op=)取代其獨身形式(op) Consider using op= instead of stand-alone op. 條款23:考慮使用其他程序庫 Consider alternative libraries. 條款24:了解 virtual functions、multiple inheritance、virtual base classes、 runtime type identification 的成本 Understand the costs of virtual functions, multiple inheritance, virtual base classes, and RTTI.技術(Techniques, Idioms, Patterns)雜項討論(Miscellany)索引(一)(General Index)索引(二)(Index of Example Classes,F(xiàn)unctions,and Templtes)
章節(jié)摘錄
版權頁:插圖:我們終于抵達了最后一站。本章內(nèi)含難以歸類的準則。一開始的兩個條款討論C++軟件開發(fā)過程如何設計出能夠容納日后變化的系統(tǒng)。是的,面向?qū)ο蠓椒☉糜谙到y(tǒng)構造的一個強大力量就是,它支持日后的變化。這些條款描述了一些特定步驟,你可以用來強化你的軟件工事,抵抗這個拒絕停滯的世界帶來的刀戟箭弩。接下來我將驗證如何在同一個程序中結合C和C++。這個需求導致語言上的額外考慮,不過C++畢竟生存于真實世界之中,有時候我們必須面對這樣的問題。最后,我把“C++標準規(guī)格”公開之后的各項語言變化做一番摘要整理。在此特別涵蓋標準程序庫中翻天覆地的大變化(亦請參考條款E49)。如果你未曾密切跟隨標準化的腳步,對于這些變化可能會有很大的驚喜。是的,標準程序庫中有許多讓人愉悅的東西。條款32:在未來時態(tài)下發(fā)展程序 世事永遠在變。 身為軟件開發(fā)人員,我們可能不是知道得很多,但我們確切知道世事永遠在變。我們不一定知道改變的是什么,改變?nèi)绾蔚絹?,改變何時發(fā)生,或為什么會發(fā)生,但我們真的知道:事情會改變。好的軟件對于變化有良好的適應能力。好的軟件可以容納新的性質(zhì),可以移植到新的平臺,可以適應新的需求,可以掌握新的輸入。軟件具備如此的彈性、健壯性、可信賴度,并非是天上掉下來的禮物,而是那些“即使面對今天的束縛,仍然對明天可能的需求念茲在茲”的設計者和實現(xiàn)者共同努力的結果。
媒體關注與評論
《Effective c++》(Scott Meyers第一本書)的榮耀:“對于任何渴望在中階或高階層面精通c++的人,我慎重推薦《Effective c++》,” ——(The C/C++User's Journal)
編輯推薦
《More Effective C++:35個改善編程與設計的有效方法(中文版)》:傳世經(jīng)典書叢
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
More Effective C++(中文版) PDF格式下載