程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C++Primer中文版(第5版)(頂級暢銷書重磅升級全面采用最新 C++ 11標准)

C++Primer中文版(第5版)(頂級暢銷書重磅升級全面采用最新 C++ 11標准)

編輯:關於C語言

C++Primer中文版第5版)頂級暢銷書重磅升級全面采用最新 C++ 11標准

美】Stanley B.Lippman( 斯坦利李普曼)Josee Lajoie(約瑟拉喬伊 )Barbara E. Moo (芭芭拉)

王剛楊巨峰

ISBN 978-7-121-15535-2

20139月出版

定價:128.00

864

16

編輯推薦

C++領域權威潘愛民|孟巖作序,代表技術圈鼎力推薦

一線C++工程師騰訊Milo、微軟劉未鵬|陳梓瀚、阿裡李雲|侯鳳林高水准技術審校

如果只讀一本C++書籍,相信所有讀過的人都會毫不猶豫選擇本書,無論初學或老手

既可用來理解C++11規則背後的原理,也可用其新語言特性與標准庫來快速構建健壯程序

采用中文版頁碼全面呈現原書大量交叉引用及詳盡索引,新式輔學設置與課後操練用於避開陷阱、鞏固良法

內容提要

這本久負盛名的 C++經典教程,時隔八年之久,終迎來史無前例的重大升級。除令全球無數程序員從中受益,甚至為之迷醉的——C++ 大師 Stanley B. Lippman 的豐富實踐經驗,C++標准委員會原負責人 Josée Lajoie 對C++標准的深入理解,以及C++ 先驅 Barbara E. Moo 在 C++教學方面的真知灼見外,更是基於全新的 C++11標准進行了全面而徹底的內容更新。非常難能可貴的是,《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 標准改寫,這在經典升級版中極其罕見——充分體現了 C++ 語言的重大進展及其全面實踐。書中豐富的教學輔助內容、醒目的知識點提示,以及精心組織的編程示范,讓這本書在 C++ 領域的權威地位更加不可動搖。無論是初學者入門,或是中、高級程序員提升,本書均為不容置疑的首選。

目錄

第1章開始1

第2章變量和基本類型29

第3章字符串、向量和數組73

第4章表達式119

第5章語句153

第6章函數181

第7章類227

第8章IO庫277

第9章順序容器291

第10章泛型算法335

第11章關聯容器373

第12章動態內存399

第13章拷貝控制439

第14章操作重載與類型轉換489

第15章面向對象程序設計525

第16章模板與泛型編程577

第17章標准庫特殊設施635

第18章用於大型程序的工具683

第19章特殊工具與技術725


       C++11
的新特性

2.1.1long long類型31

2.2.1列表初始化39

2.3.2nullptr常量48

2.4.4constexpr變量59

2.5.1類型別名聲明60

2.5.2auto類型指示符61

2.5.3decltype類型指示符62

2.6.1類內初始化65

3.2.2使用auto或decltype縮寫類型79

3.2.3范圍for語句82

3.3定義vector對象的vector向量的向量)87

3.3.1vector對象的列表初始化88

3.4.1容器的cbegin和cend函數98

3.5.3標准庫begin和end函數106

3.6使用auto和decltype簡化聲明115

4.2除法的捨入規則125

4.4用大括號包圍的值列表賦值129

4.9將sizeof用於類成員139

5.4.3 范圍for語句168

6.2.6標准庫initializer_list類197

6.3.2列表初始化返回值203

6.3.3定義尾置返回類型206

6.3.3使用decltype簡化返回類型定義

6.5.2constexpr函數214

7.1.4使用=default生成默認構造函數237

7.3.1類對象成員的類內初始化246

7.5.2委托構造函數261

7.5.6constexpr構造函數268

8.2.1用string對象處理文件名284

9.1array和forward_list容器293

9.2.3 容器的cbegin和cend函數298

9.2.4容器的列表初始化300

9.2.5容器的非成員函數swap303

9.3.1容器insert成員的返回類型308

9.3.1容器的emplace成員的返回類型308

9.4shrink_to_fit318

9.5.5string的數值轉換函數327

10.3.2Lambda表達式346

10.3.3Lambda表達式中的尾置返回類型353

10.3.4標准庫bind函數354

11.2.1關聯容器的列表初始化377

11.2.3列表初始化pair的返回類型380

11.3.2pair的列表初始化384

11.4無序容器394

12.1智能指針400

12.1.1shared_ptr類

12.1.2動態分配對象的列表初始化407

12.1.2auto和動態分配408

12.1.5unique_ptr類417

12.1.6weak_ptr類420

12.2.1范圍for語句不能應用於動態分配數組424

12.2.1動態分配數組的列表初始化424

12.2.1auto不能用於分配數組424

12.2.2allocator::construct可使用任意構造函數428

13.1.5將=default用於拷貝控制成員449

13.1.6使用=default阻止拷貝類對象449

13.5用移動類對象代替拷貝類對象469

13.6.1右值引用471

13.6.1標准庫move函數472

13.6.2移動構造函數和移動賦值473

13.6.2移動構造函數通常應該是noexcept473

13.6.2移動迭代器480

13.6.3引用限定成員函數483

14.8.3function類模板512

14.9.1explicit類型轉換運算符516

15.2.2虛函數的override指示符530

15.2.2通過定義類為final來阻止繼承533

15.3虛函數的override和final指示符538

15.7.2刪除的拷貝控制和繼承553

15.7.4繼承的構造函數557

16.1.2聲明模板類型形參為友元590

16.1.2模板類型別名590

16.1.3模板函數的默認模板參數594

16.1.5實例化的顯式控制597

16.2.3模板函數與尾置返回類型605

16.2.5引用折疊規則609

16.2.6用static_cast將左值轉換為右值612

16.2.7標准庫forward函數614

16.4可變參數模板618

16.4sizeof...運算符619

16.4.3可變參數模板與轉發622

17.1標准庫Tuple類模板636

17.2.2新的bitset運算643

17.3正則表達式庫645

17.4隨機數庫659

17.5.1浮點數格式控制670

18.1.4noexcept異常指示符690

18.1.4noexcept運算符691

18.2.1內聯名字空間699

18.3.1繼承的構造函數和多重繼承712

19.3有作用域的enum736

19.3說明類型用於保存enum對象738

19.3enum的提前聲明738

19.4.3標准庫mem_fn類模板746

19.6類類型的聯合成員751

精彩節摘

推薦序

C++11標准公布之後,C++社群出現了久違的熱情,有人甚至叫出“C++的復興”。指望C++回到20世紀90年代中期那樣的地位顯然是昧於大勢的奢望,但是C++經歷了這麼多年的打磨與起伏,其在工業界的地位已經非常穩固,在很多領域裡已經是不可取代也沒必要被取代的統治者。新標准的出現能夠大大提升C++開發的效率和質量,因此贏得歡呼也是情理之中。在這種氛圍之下,編譯器實現的速度也令人驚喜。短短兩年時間,從開源的GCC、LLVM到專有的Visual C++和Intel C++,對於新標准的追蹤之快,覆蓋之全,與當年C++ 98標准頒布之後遲遲不能落地的窘境相比,可謂對比強烈。當年是熱情的開發者反復敦促廠商實現完整標准而不得,為此沮喪無奈,那種心情,至今記憶猶新。時過境遷,今天是編譯器實現遠遠沖在前面,開發者倒是大大地落在了後面。

時至今日,能夠基本了解C++11標准的程序員恐怕不多,而能夠以新的C++風格開發實踐的人更是鳳毛麟角。因此,今天的C++開發者面臨的一個重要任務就是快速掌握新的C++風格和工具。

而說到教授“正宗的”C++11編程風格,《C++ Primer第5版)》如同它之前的版本一樣,扮演著法定教科書的角色。

一種優秀的編程語言,一定要對於計算這件事情實現一個完整和自洽的抽象。十幾年來編程語言領域的競爭,除卻實現質量之外,基本上是在比拼抽象的設計。而C語言之所以四十年長盛不衰,根本在於它對於現代計算機提供了一個最底層的高級抽象:凡是比它低的抽象都過於簡陋,凡是比它高的抽象都可以用C語言構造出來。C++成功的根本原因,恰恰是因為它雖然試圖提供一些高級的抽象機制,但是其根基與C在同一層面。正因為如此,每當你需要走下去直接與硬件對話時,C++成為C之外唯一有效率的選擇。我的一個朋友在進行了多年的大型系統軟件開發之後,不無感慨地說,C++最大的力量不在於其抽象,恰恰在於其不抽象。

話雖然如此,但是C++之所以脫離C而存在,畢竟還是因為其強大的抽象能力。Bjarne Stroustrup曾經總結說,C++同時支持4種不同的編程風格:C風格、基於對象、面向對象和泛型。事實上,把微軟的COM也算進來的話,還可以加上一種“基於組件”的風格。這麼多的風格共存於一種語言,就是其強大抽象機制的證明。但是,在C++11以前,C++的抽象可以說存在若干缺陷,其中最嚴重的是缺少自動內存管理和對象級別的消息發送機制。今天看來,C++ 98只能說是特定歷史條件造成的半成品,無論是從語言機制,還是標准庫完備程度來說,可以說都存在明顯的、不容忽略的缺陷。其直接後果,就是優雅性的缺失和效率的降低。我本人在十年前曾經與當時中國C++社群中不少傑出的人物交流探討,試圖從C++ 98中剪裁出一個小巧、優雅的、自成一體的子集,希望至少在日常編程中,能夠在這個子集之內可以寫出與當時的Java和C#同樣干淨明晰的代碼。為此我們嘗試了各種古怪的模板技巧,並且到處尋找有啟發的代碼和經驗來構造這個語言子集,結果並不理想,甚至可以說是令人非常失望。後來我在我的博客中發表過好幾篇文章,探討所謂的C++風格問題,其實就是說,C++不支持簡潔明快的面向對象風格,大家還不如回到基於對象甚至C語言的風格,最多加點模板,省一點代碼量。非要面向對象的話,就必須依賴像Qt或者MFC那樣的基礎設施才可以。

C++11出來之後,增強的語言機制和大為完善的標准庫,為C++語言的編程風格帶來了革命性的變化。如果能夠純熟地運用C++11的新特征、新機制,那麼就能夠形成一種簡潔優雅的C++編程風格,以比從前更高的效率、更好的質量進行軟件開發。對於這種新的風格,我認為“直覺、自然”是最佳的描述。也就是說,解決任何問題不必拘泥於什麼籠蓋一切的編程思想,也不再沉溺於各種古怪的模板技巧中無法自拔,而是能夠根據那個問題本身采用最自然、最符合直覺的方式。C++有自己的一套思維方式,比如容器、算法、作為概念抽象的對象等,很大程度上這套思維方式確實是合乎直覺的。只有到了C++11這一代,C++語言的高級抽象才基本完備,這樣一種風格才可能真正落實。因此可以說C++11對於C++ 98而言,不是一次簡單的升級,而是一次本質的躍升。

學習新的C++風格,並不是輕而易舉的事情。即便對於以前已經精通C++的人來說,熟練掌握rvalue reference、move語義,了解unique_ptr、shared_ptr和weak_ptr的完整用法,明智地使用function/bind和lambda機制,學習C++ Concurrency的新技術,都絕非一朝一夕之功。對於那些初學者來說,這件事情更不簡單。

本書無論對於初學者還是提高者,都是最經典的教科全書。一直以來,它的特點就是完整而詳細,基本上關於語言本身的問題,都可以在這本書裡得到解決。而本書的另一個重要優點,就是其完全基於新的編程風格編寫,所有的例子和講解都遵循C++11標准所體現出來的思路和風格進行,如果能夠踏下心來認真學習和練習,那麼就能“一次到位”地掌握C++11,盡管可能會比較慢。有經驗的C++開發者閱讀這本書當然不用從頭到尾,選擇自己關心的內容學習C++11的新特性就可以,是快速升級自身能力的捷徑。

差不多十年前,我提出一個觀點,每一個具體的技術領域,只需要讀四五本書就夠了。以前的C++是個例外,因為語言設計有缺陷,所以要讀很多書才知道如何繞過缺陷。現在的C++11完全可以了,大家讀四五本書就可以達到合格的水平,這恰恰是語言進步的體現。

本書是這四五本中的一本,而且是“教程+參考書”,扛梁之作,初學者的不二法門。另一本是《C++標准程序庫第2版)》,對於C++熟手來說更為快捷。Scott Meyers的Effective C++永遠是學習C++者必讀的,只不過這本書的第4版不知道什麼時候出來。Anthony Williams的C++ Concurrencyin Action是學習用標准C++開發並發程序的最佳選擇。國內的作品,我則高度推薦陳碩的《Linux多線程服務端編程》。這本書的名字趕跑了不少潛在的讀者,所以我要特別說明一下。這本書是C++開發的高水平作品,與其說是教你怎麼用C++寫服務端開發,不如說是教你如何以服務端開發為例子提升C++開發水平。前面幾本書都是談標准C++自己的事情,碰到像iostream這樣失敗的標准組件也不得不硬著頭皮介紹。而這本書是接地氣的實踐結晶,告訴你面對具體問題時應怎樣權衡,C++裡什麼好用,什麼不好用,為什麼,等等。

今天的C++學習者是非常幸運的,可以在C++11這個基礎上大步向前,不必再因為那些語言的缺陷和過度的技巧而煩惱。大家靜下心來認真讀幾本書,可以打下很好的基礎。

孟巖

2013年8月北京

作者簡介

Stanley B. Lippman目前是微軟公司 VisualC++ 團隊的架構師。他從1984年開始在貝爾實驗室與C++的設計者Bjarne Stroustrup一起從事C++的設計與開發。他在迪士尼和夢工廠從事動畫制作,還擔任過JPL的高級顧問。

Josée Lajoie曾經是IBM加拿大研究中心C/C++編譯器開發團隊的成員,在ISO C++標准委員會工作了7年,擔任過ISO核心語言工作組的主席和C++ Report雜志的專欄作家。

Barbara E. Moo是擁有25年軟件經驗的獨立咨詢顧問。在AT&T,她與Stroustrup、Lippman一起管理過復雜的C++開發項目。

媒體評論

這本CP5完全可以當做參考書或者字典來用,在語法上遇到什麼問題或者編譯有問題都可以再這本書裡找答案,CP4是非常權威的,畢竟Lippman大大是第一個C++編譯器的實現者之一。

這本書的寫作方式實在適合國人。他沒有中國作家普遍的“講概念”式的寫作手法,而是從因到果,由淺入深,由表及裡娓娓道來,從語言的簡單用法,到為什麼這樣設計語言,你不僅能從一個語言使用者的角度看問題,更能站在一個語言設計者的角度思考這種語言的設計優劣。

這是本非常經典的C++書籍,系統全面地介紹了C++語言。本書近一千頁,可以看成是學習C++的百科全書。市面上沒有哪本其他書籍比本書論述得更廣泛,幾乎所有的C++知識點本書都有論述而且寫得還不錯。因為這點,這本書值得每一位C++程序員擁有。

針對C++11而新添加到書中的內容恰到好處地定義了這個新版本。作者在新版本中給出了清晰的闡述,如自動類型、decltype、列表初始化器、右值引用、move操作符、lambda表達式、智能指針等。僅針對C++11的延展,正是這本書的價值所在。

C++是一門強大、難學、令人痛苦,但又是如此美妙的編程語言,在工業界和學術界都可以使用,《C++ Primer第5版)》即針對初學者,也同樣適用於有一定編程經驗的讀者,最新版本配備了C++11最新標准,是C++粉絲們書架上必備的一本經典著作。

前言

難以計數的程序員已經通過舊版的《C++ Primer》學會了C++語言。而在這段時間中,C++本身又已成熟了許多:語言本身的關注點和程序設計社區的關注點都已大大開闊,已經從主要關注機器效率轉變為更多地關注編程效率。

2011年,C++標准委員會發布了ISO C++標准的一個重要修訂版。此修訂版是C++進化過程中的最新一步,延續了前幾個版本對編程效率的強調。新標准的主要目標是:

  • 使語言更為統一,更易於教學

  • 使標准庫更簡單、安全、使用更高效

  • 使編寫高效率的抽象和庫變得更簡單

因此,在這個版本的《C++ Primer》中,我們進行了徹底的修改,使用了最新的C++標准,即C++11。為了了解新標准是如何全面影響C++語言的,你可以看一下xxiii頁至xxv頁的新特性列表,其中列出了哪些章節涉及了C++的新特性。

新標准增加的一些特性是具有普適性的,例如用於類型推斷的auto。這些新特性使本書中的代碼更易於閱讀和理解。程序以及程序員!)可以忽略類型的細節,從而更容易集中精力於程序邏輯上來。其他一些新特性,例如智能指針和允許移動的容器,允許我們編寫更為復雜的類,而又不必與錯綜復雜的資源管理做斗爭。因此,在本書中開始講授如何編寫自己的類,會比第4版簡單得多。舊標准中阻擋在我們前進路上的很多細節,你我都不必再擔心了。

對於本書中涉及新標准定義的新特性的那些部分,我們都已用一個特殊的圖標標記出來了。我們希望這些提示標記對那些已經熟悉C++語言核心內容的讀者是有幫助的,可以幫助他們決定將注意力投向哪裡。對於那些可能尚不支持所有新特性的編譯器,我們還希望這些圖標能有助於解釋這類編譯器所給出的編譯錯誤信息。這是因為雖然本書中幾乎所有例子都已經用最新版本的GNU編譯器編譯通過,但我們知道一些讀者可能尚未將編譯器更新到最新版本。雖然新標准增加了大量新功能,但核心C++語言並未變化,這構成了本書的大部分內容。讀者可以借助這些圖標來判斷哪些功能可能還沒有被自己的編譯器所支持。

為什麼選擇這本書?

現代C++語言可以看作是三部分組成的:

  • 低級語言,大部分繼承自C語言。

  • 現代高級語言特性,允許我們定義自己的類型以及組織大規模程序和系統。

  • 標准庫,它利用高級特性來提供有用的數據結構和算法。

大多數C++教材按照語言進化的順序來組織其內容。首先講授C++的C子集,然後將C++的更為抽象的一些特性作為高級話題在書的最後進行介紹。這種方式存在兩個問題:讀者會陷入那些繼承自低級程序設計的細節,從而由於挫折感而放棄;讀者被強加學習一些壞習慣,隨後又需要忘記這些內容。

我們采用一種相反的方法:從一開始就介紹一些語言特性,能讓程序員忽略那些繼承自低級程序設計的細節。例如,在介紹和使用內置的算術和數組類型時,我們還連同介紹和使用標准庫中的類型string和vector。使用這些類型的程序更易寫、易理解且更少出錯。

太多時候,標准庫被當作一種“高級”話題來講授。很多教材不使用標准庫,而是使用基於字符數組指針和動態內存管理的低級程序設計技術。讓使用這種低級技術的程序正確運行,要比編寫相應的使用標准庫的C++代碼困難得多。

貫穿全書,我們都在強調好的風格:我們想幫助讀者直接養成好的習慣,而不是在獲得很多很復雜的知識後再去忘掉那些壞習慣。我們特別強調那些棘手的問題,並對常見的錯誤想法和陷阱提出警告。

我們還注意解釋規則背後的基本原理——使讀者不僅知其然,還能知其所以然。我們相信,通過體會程序的工作原理,讀者會更快地鞏固對語言的理解。

雖然你不必為了學習本書而掌握C語言,但我們還是假定你了解足夠多的程序設計知識,了解至少一門現代分程序結構語言,知道如何用這門語言編寫、編譯以及運行程序。特別是,我們假定你已經使用過變量,編寫、調用過函數,也使用過編譯器。

第5版變化的內容

這一版《C++ Primer》的新特點是用邊欄圖標來幫助引導讀者。C++是一種龐大的編程語言,它提供了一些為特定程序設計問題定制的功能。其中一些功能對大型項目團隊有很重要的意義,但對於小型項目開發可能並無必要。因此,並非每個程序員都需要了解每個語言特性的所有細節。我們加入這些邊欄圖標來幫助讀者弄清哪些內容可以隨後再學習,而哪些主題是更為重要的。

對於包含C++語言基礎內容的章節,我們用一個小人正在讀書的圖標加以標記。用這個圖標標記的那些章節,涵蓋了構成語言核心部分的主題。每個人都應該閱讀並理解這些章節的內容。

對於那些涉及高級主題或特殊目的主題的章節,我們也進行了標記。在首次閱讀時,這些章節可以跳過或快速浏覽。我們用一疊書的圖標標記這些章節,指出在這些地方,你可以放心地放下書本。快速浏覽這些章節可能是一個好主意,這樣你就可以知道有這些特性存在。但在真正需要在自己的程序中使用這些特性之前,沒有必要花費時間仔細學習這些主題。

為了進一步引導讀者的注意力,我們還用放大鏡圖標標記了特別復雜的概念。我們希望讀者對有這種標記的章節能多花費一些時間徹底理解其中的內容。在這些章節中,至少有一些,其主題的重要性可能不是那麼明顯;但我們認為,你會發現這些章節涉及的主題對理解C++語言原來至關重要。

交叉引用的廣泛使用,是本書采用的另外一種閱讀幫助。我們希望這些引用能幫助讀者容易地翻閱書中的內容,同時還能在後面的例子涉及到前面的內容時容易地跳回到前面。

沒有改變的是,《C++ Primer》仍是一本清晰、正確、全面的C++入門教材。我們通過給出一系列復雜度逐步增加的例子來講授這門語言,這些例子說明了語言特性,展示了如何充分用好C++語言。

本書的結構

我們首先在第I部分和第II部分中介紹了C++語言和標准庫的基礎內容。這兩部分包含的內容足夠你編寫出有意義的程序,而不是只能寫一些玩具程序。大部分程序員基本上都需要掌握本書這兩部分所包含的所有內容。

除了講授C++的基礎內容,第I部分和第II部分還有另外一個重要目的:通過使用標准庫中定義的抽象設施,使你更加適應高級程序設計技術。標准庫設施本身是一組抽象數據類型,通常用C++編寫。用來設計標准庫的,就是任何C++程序員都可以使用的用來構造類的那些語言特性。我們講授C++語言的一個經驗是,在先學習了使用設計良好的抽象類型後,讀者會發現理解如何構造自己的類型更容易了。

只有在經過全面的標准庫使用訓練,並編寫了各種標准庫所支持的抽象程序後,我們才真正進入到那些允許你編寫自己的抽象類型的C++特性中去。本書的第III部分和第IV部分介紹了如何編寫類的形式的抽象類型。第III部分包含基礎內容,第IV部分介紹更專門的語言特性。

在第III部分中,我們將介紹拷貝控制問題,以及其他一些使類能像內置類型一樣容易使用的技術。類是面向對象編程和泛型編程的基礎,第III部分也會介紹這些內容。第IV部分是《C++ Primer》的結束部分,它介紹了一些在組織大型復雜系統時非常有用的語言特性。此外,我們將在附錄A中總結標准庫算法。

讀者幫助

本書的每一章均以一個總結和一個術語表結束,兩者一起扼要回顧了這一章的大部分學習重點。讀者應該將這些部分作為個人備忘錄:如果你不理解某個術語,可以重新學習這一章的相應部分。

在本書中我們還使用了其他一些學習輔助:

  • 重要的術語用黑體顯示;我們假定讀者已經熟悉的重要術語用楷體顯示。每個術語都會列在章末尾的術語表中。

  • 貫穿全書,我們用高亮顯示來提醒讀者注意語言的重要部分,對常見的陷阱提出警告,建議好的程序設計習慣,以及提供一般性的使用提示。

  • 為了更好地理解語言特性間和概念間的聯系,我們提供大量向前的和向後的交叉引用。

  • 對重要的概念和C++新程序員常常覺得最困難的主題,我們提供邊欄討論。

  • 學習任何程序設計語言都需要編寫程序。為此,貫穿全書我們提供大量程序示例。擴展示例的源碼可從下面的網址獲得:http://www.informit.com/title/0321714113

  • 正文中切口處以“”形式標注的頁碼為英文原書頁碼,便於讀者與英文原版書進行對照閱讀。

關於編譯器的注意事項

在撰寫本書時2012年7月),編譯器提供商正在努力工作,升級編譯器以匹配最新的ISO標准。我們使用最多的編譯器是GNU編譯器4.7.0。本書中只有一小部分特性在此編譯器中尚未實現:繼承構造函數、成員函數的引用限定符以及正則表達式庫。

致謝

我們要特別感謝標准委員會幾位現任和前任委員:Dave Abrahams、Andy Koenig、Stephan T. Lavavej、Jason Merrill、John Spicer和Herb Sutter在准備本書的過程中提供的幫助。在理解新標准的一些更微妙之處,他們為我們提供了寶貴的幫助。我們還要感謝很多致力於升級GNU編譯器以實現新標准的人們。

與舊版《C++ Primer》中一樣,我們要感謝BjarneStroustrup不知疲倦地為C++工作以及他和作者長時間的友誼。我們還要感謝Alex Stepanov的非凡洞察力,催生了標准庫核心的容器和算法。最後,我們要感謝C++標准委員會的所有委員,感謝他們這麼多年來在淨化、精煉和改進C++語言方面的辛苦工作。

我們衷心感謝審稿人:Marshall Clow、Jon Kalb、Nevin Liber、Dr. C. L. Tondo、Daveed Vandevoorde和Steve Vinoski,他們建設性的意見幫助我們對全書做出了大大小小的改進。

本書是用Latex及其發行版本中的很多包來進行排版的,我們應該感謝Latex社區成員創造出如此強大的排版工具。

最後,我們要感謝Addison-Wesley公司的優秀員工,他們指導了本書的整個出版過程:Peter Gordon,我們的編輯,他給了我們動力再次修改C++ Primer;KimBoedigheimer,保證了一切按計劃進行;Barbara Wood,她在編輯過程中找到了大量編輯錯誤;還有Elizabeth Ryan,很高興再次和她共同工作,她指導我們完成了整個設計和生產流程。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved