C++ 新標准 C++11 的發布導致了大批新書的出現,還有一些經典書籍也進行了更新。Andrew Binstock 在 Dr.dobbs 上給大家推介一些學習 C++ 必需的核心書籍。
1. 《C++程序設計語言》英文第四版,作者: Bjarne Stroustrup
這本書已經被正式列為C++編程的權威書籍。它堪稱語言界的權威,獨具特色,書面清晰,由設計C++的Stroustup所著。 也許有些讀者認為ANSI C++文檔才是最佳選擇,但是這本書作為一個十分簡潔的參考書籍,更適合已經對該
語言有所了解的讀者們。該書為新特性提供了友好的解釋,外加一些對於需要做的以及避免做的事情的建議,使得它成為了想要理解具體的特性的讀者們的最佳選擇。從這個意義上來說,這本書遠遠不止是一本參考教程。
一些外在方面可能對這本書有所貶低,尤其是它沒有使用等寬字體來打印代碼。 不管對於一些讀者來說,這看起來有多美觀,它還是拋棄了普通的代碼讀者,他們希望垂直對齊,但這不可能出現。盡管這樣,代碼的排版還是比以前的版本好太多 了。另一擔憂會跟C++本身有關,而不再是這本書。這個版本有1328頁,比原始版本大約多了1000頁。 Stroustrup對於庫給了很少的介紹,這些數字足以說明C++已經變得有多復雜。 盡管有這些問題,但是我很清楚,對於C++程序員來說,不管使用這門語言的新特性有多困難,他們都得堅持,唯有這樣,才能前進。 極力推薦此書!
第四版的中文版還沒有出,目前《C++程序設計語言(特別版•十周年中文紀念版)》)
C++ Programming Language 4th Edition
2. 《C++ Primer 第 5 版英文版)》由 Stanley Lippman,Josee Laoie 和 Barbara Moo合著
多年來,C++ Primer 已經成為了C++的明確教程。 該版本主要針對C++11標准進行了更新,完全重寫了。 900頁密集的頁面裡,對該語言的每一個角落都進行了詳細的探索。 這種說法也許有點保守。這本書的基調和內容都遠遠超過書名”入門”這個詞所指的意思。在語言上,沒有一節能是”快速講解”,相反,從質量到文本都做了很耐 心的描述以確保能涵蓋該語言的每一個方面,預見到C++程序員可能遇到的任何問題。想知道將析構函數聲明為C++11標准的deleted函數,會帶來什 麼樣的嚴重後果嗎我也不知道。但是這本書裡會有詳細的解答,並引用了其他章節作為額外的輔助信息。
同樣,這本書也僅僅包括了語言方面,還有一些對庫的討論和附錄,附錄總結了庫裡包含的各種各樣的頭文件和算法(關於C++庫的詳細介紹,我推薦這兩 本書《The C++ Standard Library: A Tutorial and Reference》, 後面會提到。坦白講,你想知道的關於C++的任何東西,在這兩本書裡都有透徹的講解。 剛才提到的Stroustrup的那本書《C++ Programming Language, 4th Ed》, 似乎是這本書的競爭對手。 Stroustrup的書主要是一本注重講解的參考書,也可以偶爾查詢用。但是這本書要實用得多。它有討論到,如果你沒有正確使用新特性,會出現什麼問 題,還包含了大量的代碼,總之,相對於前一本書,這本書提供了更多的指導。
對於這本書,我唯一的擔心就是它很明確是為已經了解基本語言的讀者編寫的。對於在校學生,甚至是一些有經驗的程序員但是初次接觸C++,我不推薦這 本書。它的內容太詳細以致於不能通過快速閱讀達到高效地掌握該語言的效果。 但是對於現有的C++開發人員,尤其是那些想要使用C++11新特性的開發者,這本書就是很好的選擇。
3. 《C++標准庫:自學教程與參考手冊(第2版)(英文版)》Nicolai Josuttis著
這是C++標准庫的經典教程和參考的第二版,根據新標准C++11進行了更新。不像其他許多書,包含了庫和API,這不是對一大堆函數調用的美化解 釋。相反,它把標准庫主要是STL)分解成了一些小節,解釋了組件設計用到的基本方法。這時候,作者才進入到API的細節部分,結尾處總結了所有其它可 能要用到的方法,還有一些簡短的解釋。容器部分才是精華,對設計,內部結構和應用的解釋,以及各種選擇之間的比較。
這些論述很有說服力,條理清晰,信息量超大。例如,STL函數對象和匿名函數的章節,花了12頁篇幅只是為了解釋什麼是函數對象以及為什麼要使用它 們。這些論述之後,作者又花費了12頁來解釋預定義函數對象。在這個時候,他就已經為最後的討論《匿名函數之旅》 奠定了基礎。所以全書總共1000多頁。這些解釋很多都使用了簡短,又突出重點的程序來說明,所以你能夠很確切地理解一個函數是如何使用或應用的。
這本書的第一版被許多的C++程序員視為真正的經典。我覺得第二版沒有道理不受歡迎。對此不熟悉的讀者,不管是把它看作是第一本書的升級版還是另一本新書,我都強力推薦。這篇簡短的介紹也算是對這本是的一個很好的補充。
The C++ Standard Library 2nd Edition