出版時間:2010 出版社:人民郵電出版社 作者:Stanley B.Lippman,Josee Lajoie,Barbara E.Moo 頁數(shù):974 譯者:李師賢,蔣愛軍,梅曉勇
Tag標簽:無
前言
本書全面介紹了C++語言。作為一本入門書(Primer),它以教程的形式對C++語言進行清晰的講解,并輔之以豐富的示例和各種學習輔助手段。與大多數(shù)入門教程不同,本書對C++語言本身進行了詳盡的描述,并特別著重介紹了目前通行的、行之有效的程序設計技巧?! o數(shù)程序員曾使用本書的前幾個版本學習C++,在此期間C++也逐漸發(fā)展成熟。這些年來,C++語言的發(fā)展方向以及C++程序員的關注點,已經(jīng)從以往注重運行時的效率,轉(zhuǎn)到千方百計地提高程序員的編程效率上。隨著標準庫的廣泛可用,我們現(xiàn)在能夠比以往任何時候更高效地學習和使用C++。本書這一版本充分體現(xiàn)了這一點?! 〉?版的改動 為了體現(xiàn)現(xiàn)代C++編程風格,我們重新組織并重寫了本書。書中不再強調(diào)低層編程技術,而把中心轉(zhuǎn)向標準庫的使用。書中很早就開始介紹標準庫,示例也已經(jīng)重新改寫,充分利用了標準庫設施。我們也對語言主題敘述的先后次序進行了重新編排,使講解更加流暢?! 〕匦陆M織內(nèi)容外,為了便于讀者理解,我們還增加了幾個新的環(huán)節(jié)。每一章都新增了“小結(jié)”和“術語”,概括本章要點。讀者可以利用這些部分進行自我檢查;如果發(fā)現(xiàn)還有不理解的概念,可以重新學習該章中的相關部分。書中還加入了下述幾種學習輔助手段: ·重要術語用黑體表示,我們認為讀者已經(jīng)熟悉的重要術語則用楷體表示。這些術語都會出現(xiàn)在章后的“術語”部分。 ·書中用特殊版式突出標注的文字,是為了向讀者提醒語言的重要特征,警示常見的錯誤,標明良好的編程實踐,列出通用的使用技巧。希望這些標注可以幫助讀者更快地消化重要概念,避免犯常見錯誤?! 榱烁子诶斫飧鞣N特征或概念間的關系,書中大量使用了前后交叉引用?! τ谀承┲匾拍詈虲++新手最頭疼的問題,我們進行了額外的討論和解釋。這部分也以特殊版式標出。
內(nèi)容概要
C++誕生20年后,因其強大的功能、廣泛的適用性和極高的效率,已經(jīng)成為毋庸置疑的主流編程語言。但是C++語言也不得不面對這樣的挑戰(zhàn):其博大精深不僅令初學者望而生畏,而且即使是許多富于經(jīng)驗的老手也很難全面掌握,更有不少C++程序員一直背負著C語言的歷史包袱,常常落入各種微妙難解的安全和性能陷阱。如何使現(xiàn)代C++理念深入人心,使C++更加容易學習和使用,已經(jīng)成為眾所矚目的關鍵問題?! ++ Primer是久負盛名、無可替代的C++經(jīng)典著作,已經(jīng)幫助全球無數(shù)程序員學會了C++。第4版完美結(jié)合了C++大師Stan B. Lippman豐富的實踐經(jīng)驗和C++標準委員會原負責人Josée Lajoie對C++標準的深入理解,更加入了C++先驅(qū)Barbara E. Moo在C++教學方面的真知灼見,充分體現(xiàn)了C++語言的最新進展和當前的業(yè)界最佳實踐?! ++基本概念和技術全面而且權威的闡述,以及對現(xiàn)代C++編程風格的強調(diào),使本書不僅是初學者的最佳C++指南,而且是中高級程序員不可或缺的參考書。
作者簡介
《C++ Primer(第4版)》的三位作者都是C++領域的權威人物。
Stanley B. Lippman 微軟公司 Visual C++ 團隊的架構師。他從1984年開始在貝爾實驗室與C++的設計者Bjarne Stroustrup一起從事C++的設計與開發(fā)。他還著有Inside the C++ Object Model。
Josée Lajoie 曾經(jīng)是IBM加拿大研究中心C/C++編譯器開發(fā)團隊的成員,在ISO C++標準委員會工作了7年,擔任過ISO核心語言工作組的主席和C++ Report雜志的專欄作家。
Barbara E. Moo 擁有25年軟件經(jīng)驗的獨立咨詢顧問。在AT&T,她與Stroustrup、Lippman一起管理過復雜的C++開發(fā)項目。她和Andrew Koenig合著了Accelerated C++和Ruminations on C++。
書籍目錄
第1章 快速入門 1.1 編寫簡單的C++程序 1.2 初窺輸入/輸出 1.2.1 標準輸入與輸出對象 1.2.2 一個使用IO庫的程序 1.3 關于注釋 1.4 控制結(jié)構 1.4.1 while語句 1.4.2 for語句 1.4.3 if語句 1.4.4 讀入未知數(shù)目的輸入 1.5 類的簡介 1.5.1 Sales_item類 1.5.2 初窺成員函數(shù) 1.6 C++程序 小結(jié) 術語 第一部分 基本語言 第2章 變量和基本類型 2.1 基本內(nèi)置類型 2.1.1 整型 2.1.2 浮點型 2.2 字面值常量 2.3 變量 2.3.1 什么是變量 2.3.2 變量名 2.3.3 定義對象 2.3.4 變量初始化規(guī)則 2.3.5 聲明和定義 2.3.6 名字的作用域 2.3.7 在變量使用處定義變量 2.4 const限定符 2.5 引用 2.6 typedef名字 2.7 枚舉 2.8 類類型 2.9 編寫自己的頭文件 2.9.1 設計自己的頭文件 2.9.2 預處理器的簡單介紹 小結(jié) 術語 第3章 標準庫類型 3.1 命名空間的using聲明 3.2 標準庫string類型 3.2.1 string對象的定義和初始化 3.2.2 String對象的讀寫 3.2.3 string對象的操作 3.2.4 string對象中字符的處理 3.3 標準庫vector類型 3.3.1 vector對象的定義和初始化 3.3.2 vector對象的操作 3.4 迭代器簡介 3.5 標準庫bitset類型 3.5.1 bitset對象的定義和初始化 3.5.2 bitset對象上的操作 小結(jié) 術語 第4章 數(shù)組和指針 4.1 數(shù)組 4.1.1 數(shù)組的定義和初始化 4.1.2 數(shù)組操作 4.2 指針的引入 4.2.1 什么是指針 4.2.2 指針的定義和初始化 4.2.3 指針操作 4.2.4 使用指針訪問數(shù)組元素 4.2.5 指針和const限定符 4.3 C風格字符串 4.3.1 創(chuàng)建動態(tài)數(shù)組 4.3.2 新舊代碼的兼容 4.4 多維數(shù)組 小結(jié) 術語 第5章 表達式 5.1 算術操作符 5.2 關系操作符和邏輯操作符 5.3 位操作符 5.3.1 bitset對象或整型值的使用 5.3.2 將移位操作符用于IO 5.4 賦值操作符 5.4.1 賦值操作的右結(jié)合性 5.4.2 賦值操作具有低優(yōu)先級 5.4.3 復合賦值操作符 5.5 自增和自減操作符 5.6 箭頭操作符 5.7 條件操作符 5.8 sizeof操作符 5.9 逗號操作符 5.10 復合表達式的求值 5.10.1 優(yōu)先級 5.10.2 結(jié)合性 5.10.3 求值順序 5.11 new和delete表達式 5.12 類型轉(zhuǎn)換 5.12.1 何時發(fā)生隱式類型轉(zhuǎn)換 5.12.2 算術轉(zhuǎn)換 5.12.3 其他隱式轉(zhuǎn)換 5.12.4 顯式轉(zhuǎn)換 5.12.5 何時需要強制類型轉(zhuǎn)換 5.12.6 命名的強制類型轉(zhuǎn)換 5.12.7 舊式強制類型轉(zhuǎn)換 小結(jié) 術語 第6章 語句 6.1 簡單語句 6.2 聲明語句 6.3 復合語句(塊) 6.4 語句作用域 6.5 if語句 6.6 switch語句 6.6.1 使用switch 6.6.2 switch中的控制流 6.6.3 default標號 6.6.4 switch表達式與case標號 6.6.5 switch內(nèi)部的變量定義 6.7 while語句 6.8 for循環(huán)語句 6.8.1 省略for語句頭的某些部分 6.8.2 for語句頭中的多個定義 6.9 do while語句 6.10 break語句 6.11 continue語句 6.12 goto語句 6.13 try塊和異常處理 6.13.1 throw表達式 6.13.2 try塊 6.13.3 標準異常 6.14 使用預處理器進行調(diào)試 小結(jié) 術語 第7章 函數(shù) 7.1 函數(shù)的定義 7.1.1 函數(shù)返回類型 7.1.2 函數(shù)形參表 7.2 參數(shù)傳遞 7.2.1 非引用形參 7.2.2 引用形參 7.2.3 vector和其他容器類型的形參 7.2.4 數(shù)組形參 7.2.5 傳遞給函數(shù)的數(shù)組的處理 7.2.6 main:處理命令行選項 7.2.7 含有可變形參的函數(shù) 7.3 return語句 7.3.1 沒有返回值的函數(shù) 7.3.2 具有返回值的函數(shù) 7.3.3 遞歸 7.4 函數(shù)聲明 7.5 局部對象 7.5.1 自動對象 7.5.2 靜態(tài)局部對象 7.6 內(nèi)聯(lián)函數(shù) 7.7 類的成員函數(shù) 7.7.1 定義成員函數(shù)的函數(shù)體 7.7.2 在類外定義成員函數(shù) 7.7.3 編寫Sales_item類的構造函數(shù) 7.7.4 類代碼文件的組織 7.8 重載函數(shù) 7.8.1 重載與作用域 7.8.2 函數(shù)匹配與實參轉(zhuǎn)換 7.8.3 重載確定的三個步驟 7.8.4 實參類型轉(zhuǎn)換 7.9 指向函數(shù)的指針 小結(jié) 術語 第8章 標準IO庫 8.1 面向?qū)ο蟮臉藴蕩臁 ?.2 條件狀態(tài) 8.3 輸出緩沖區(qū)的管理 8.4 文件的輸入和輸出 8.4.1 文件流對象的使用 8.4.2 文件模式 8.4.3 一個打開并檢查輸入文件的程序 8.5 字符串流 小結(jié) 術語 第二部分 容器和算法 第9章 順序容器 9.1 順序容器的定義 9.1.1 容器元素的初始化 9.1.2 容器內(nèi)元素的類型約束 9.2 迭代器和迭代器范圍 9.2.1 迭代器范圍 9.2.2 使迭代器失效的容器操作 9.3 順序容器的操作 9.3.1 容器定義的類型別名 9.3.2 begin和end成員 9.3.3 在順序容器中添加元素 9.3.4 關系操作符 9.3.5 容器大小的操作 9.3.6 訪問元素 9.3.7 刪除元素 9.3.8 賦值與swap 9.4 vector容器的自增長 9.5 容器的選用 9.6 再談string類型 9.6.1 構造string對象的其他方法 9.6.2 修改string對象的其他方法 9.6.3 只適用于string類型的操作 9.6.4 string類型的查找操作 9.6.5 string對象的比較 9.7 容器適配器 9.7.1 棧適配器 9.7.2 隊列和優(yōu)先級隊列 小結(jié) 術語 第10章 關聯(lián)容器 10.1 引言:pair類型 10.2 關聯(lián)容器 10.3 map類型 10.3.1 map對象的定義 10.3.2 map定義的類型 10.3.3 給map添加元素 10.3.4 使用下標訪問map對象 10.3.5 map::insert的使用 10.3.6 查找并讀取map中的元素 10.3.7 從map對象中刪除元素 10.3.8 map對象的迭代遍歷 10.3.9 “單詞轉(zhuǎn)換”map對象 10.4 set類型 10.4.1 set容器的定義和使用 10.4.2 創(chuàng)建“單詞排除”集 10.5 multimap和multiset類型 10.5.1 元素的添加和刪除 10.5.2 在multimap和multiset中查找元素 10.6 容器的綜合應用:文本查詢程序 10.6.1 查詢程序的設計 10.6.2 TextQuery類 10.6.3 TextQuery類的使用 10.6.4 編寫成員函數(shù) 小結(jié) 術語 第11章 泛型算法 11.1 概述 11.2 初窺算法 11.2.1 只讀算法 11.2.2 寫容器元素的算法 11.2.3 對容器元素重新排序的算法 11.3 再談迭代器 11.3.1 插入迭代器 11.3.2 iostream迭代器 11.3.3 反向迭代器 11.3.4 const迭代器 11.3.5 五種迭代器 11.4 泛型算法的結(jié)構 11.4.1 算法的形參模式 11.4.2 算法的命名規(guī)范 11.5 容器特有的算法 小結(jié) 術語 第三部分 類和數(shù)據(jù)抽象 第12章 類 12.1 類的定義和聲明 12.1.1 類定義:扼要重述 12.1.2 數(shù)據(jù)抽象和封裝 12.1.3 關于類定義的更多內(nèi)容 12.1.4 類聲明與類定義 12.1.5 類對象 12.2 隱含的this指針 12.3 類作用域 12.4 構造函數(shù) 12.4.1 構造函數(shù)初始化式 12.4.2 默認實參與構造函數(shù) 12.4.3 默認構造函數(shù) 12.4.4 隱式類類型轉(zhuǎn)換 12.4.5 類成員的顯式初始化 12.5 友元 12.6 static類成員 12.6.1 static成員函數(shù) 12.6.2 static數(shù)據(jù)成員 小結(jié) 術語 第13章 復制控制 13.1 復制構造函數(shù) 13.1.1 合成的復制構造函數(shù) 13.1.2 定義自己的復制構造函數(shù) 13.1.3 禁止復制 13.2 賦值操作符 13.3 析構函數(shù) 13.4 消息處理示例 13.5 管理指針成員 13.5.1 定義智能指針類 13.5.2 定義值型類 小結(jié) 術語 第14章 重載操作符與轉(zhuǎn)換 14.1 重載操作符的定義 14.2 輸入和輸出操作符 14.2.1 輸出操作符的重載 14.3 算術操作符和關系操作符 14.3.1 相等操作符 14.3.2 關系操作符 14.4 賦值操作符 14.5 下標操作符 14.6 成員訪問操作符 14.7 自增操作符和自減操作符 14.8 調(diào)用操作符和函數(shù)對象 14.8.1 將函數(shù)對象用于標準庫算法 14.8.2 標準庫定義的函數(shù)對象 14.8.3 函數(shù)對象的函數(shù)適配器 14.9 轉(zhuǎn)換與類類型 14.9.1 轉(zhuǎn)換為什么有用 14.9.2 轉(zhuǎn)換操作符 14.9.3 實參匹配和轉(zhuǎn)換 14.9.4 重載確定和類的實參 14.9.5 重載、轉(zhuǎn)換和操作符 小結(jié) 術語 第四部分 面向?qū)ο缶幊膛c泛型編程 第15章 面向?qū)ο缶幊獭 ?5.1 面向?qū)ο缶幊蹋焊攀觥 ?5.2 定義基類和派生類 15.2.1 定義基類 15.2.2 protected成員 15.2.3 派生類 15.2.4 virtual與其他成員函數(shù) 15.2.5 公用、私有和受保護的繼承 15.2.6 友元關系與繼承 15.2.7 繼承與靜態(tài)成員 15.3 轉(zhuǎn)換與繼承 15.3.1 派生類到基類的轉(zhuǎn)換 15.3.2 基類到派生類的轉(zhuǎn)換 15.4 構造函數(shù)和復制控制 15.4.1 基類構造函數(shù)和復制控制 15.4.2 派生類構造函數(shù) 15.4.3 復制控制和繼承 15.4.4 虛析構函數(shù) 15.4.5 構造函數(shù)和析構函數(shù)中的虛函數(shù) 15.5 繼承情況下的類作用域 15.5.1 名字查找在編譯時發(fā)生 15.5.2 名字沖突與繼承 15.5.3 作用域與成員函數(shù) 15.5.4 虛函數(shù)與作用域 15.6 純虛函數(shù) 15.7 容器與繼承 15.8 句柄類與繼承 15.8.1 指針型句柄 15.8.2 復制未知類型 15.8.3 句柄的使用 15.9 再談文本查詢示例 15.9.1 面向?qū)ο蟮慕鉀Q方案 15.9.2 值型句柄 15.9.3 Query_base類 15.9.4 Query句柄類 15.9.5 派生類 15.9.6 eval函數(shù) 小結(jié) 術語 第16章 模板與泛型編程 16.1 模板定義 16.1.1 定義函數(shù)模板 16.1.2 定義類模板 16.1.3 模板形參 16.1.4 模板類型形參 16.1.5 非類型模板形參 16.1.6 編寫泛型程序 16.2 實例化 16.2.1 模板實參推斷 16.2.2 函數(shù)模板的顯式實參 16.3 模板編譯模型 16.4 類模板成員 16.4.1 類模板成員函數(shù) 16.4.2 非類型形參的模板實參 16.4.3 類模板中的友元聲明 16.4.4 Queue和QueueItem的友元聲明 16.4.5 成員模板 16.4.6 完整的Queue類 16.4.7 類模板的static成員 16.5 一個泛型句柄類 16.5.1 定義句柄類 16.5.2 使用句柄 16.6 模板特化 16.6.1 函數(shù)模板的特化 16.6.2 類模板的特化 16.6.3 特化成員而不特化類 16.6.4 類模板的部分特化 16.7 重載與函數(shù)模板 小結(jié) 術語 第五部分 高級主題 第17章 用于大型程序的工具 17.1 異常處理 17.1.1 拋出類類型的異?! ?7.1.2 棧展開 17.1.3 捕獲異?! ?7.1.4 重新拋出 17.1.5 捕獲所有異常的處理代碼 17.1.6 函數(shù)測試塊與構造函數(shù) 17.1.7 異常類層次 17.1.8 自動資源釋放 17.1.9 auto_ptr類 17.1.10 異常說明 17.1.11 函數(shù)指針的異常說明 17.2 命名空間 17.2.1 命名空間的定義 17.2.2 嵌套命名空間 17.2.3 未命名的命名空間 17.2.4 命名空間成員的使用 17.2.5 類、命名空間和作用域 17.2.6 重載與命名空間 17.2.7 命名空間與模板 17.3 多重繼承與虛繼承 17.3.1 多重繼承 17.3.2 轉(zhuǎn)換與多個基類 17.3.3 多重繼承派生類的復制控制 17.3.4 多重繼承下的類作用域 17.3.5 虛繼承 17.3.6 虛基類的聲明 17.3.7 特殊的初始化語義 小結(jié) 術語 第18章 特殊工具與技術 18.1 優(yōu)化內(nèi)存分配 18.1.1 C++中的內(nèi)存分配 18.1.2 allocator類 18.1.3 operator new函數(shù)和operator delete函數(shù) 18.1.4 定位new表達式 18.1.5 顯式析構函數(shù)的調(diào)用 18.1.6 類特定的new和delete 18.1.7 一個內(nèi)存分配器基類 18.2 運行時類型識別 18.2.1 dynamic_cast操作符 18.2.2 typeid操作符 18.2.3 RTTI的使用 18.2.4 type_info類 18.3 類成員的指針 18.3.1 聲明成員指針 18.3.2 使用類成員的指針 18.4 嵌套類 18.4.1 嵌套類的實現(xiàn) 18.4.2 嵌套類作用域中的名字查找 18.5 聯(lián)合:節(jié)省空間的類 18.6 局部類 18.7 固有的不可移植的特征 18.7.1 位域 18.7.2 volatile限定符 18.7.3 鏈接指示:extern "C" 小結(jié) 術語 附錄 標準庫 索引 C++編程規(guī)范
章節(jié)摘錄
第一部分 基本語言 第3章 標準庫類型 第2章所涉及的類型都是低級數(shù)據(jù)類型:這些類型表示數(shù)值或字符的抽象,并根據(jù)其具體機器表示來定義?! 〕诉@些在語言中定義的類型外,C++標準庫還定義了許多更高級的抽象數(shù)據(jù)類型(abstract data type)。之所以說這些標準庫類型是更高級的,是因為其中反映了更復雜的概念;之所以說它們是抽象的,是因為我們在使用時不需要關心它們是如何表示的,只需知道這些抽象數(shù)據(jù)類型支持哪些操作就可以了?! 煞N最重要的標準庫類型是string和vector。string類型支持長度可變的字符串,vector可用于保存一組指定類型的對象。說它們重要,是因為它們在C++定義的基本類型基礎上作了一些改進。第4章還將學習類似于標準庫中string和vector類型的語言級構造,但標準庫的string和vector類型可能更靈活,且不易出錯。
媒體關注與評論
“在遇到無法解決的問題時,我總會求助于C++ Primer一書?!薄 狟ruce Eckel,“編程思想”系列圖書作者 “眾所周知,C++ Primer是學習C++最理想的參考書之一,適用于各種水平的C++程序員。第4版不但保持了這種傳統(tǒng),而且有了很大改善?!薄 猄teve Vinoski,IONA科技公司首席工程師,CORBA與C++權威 “(本書)不但能讓初學者迅速入門,而且是用優(yōu)秀的編程實踐引導他們?nèi)腴T?!薄 狽evin Liber,資深C++開發(fā)人員 “如果你想僅通過一本書就徹底學會C++并能很好地運用,這本書值得購買?!薄 狿aul M. Dubuc,軟件開發(fā)人員 “無論如何,這是我讀過的最好的程序設計書……如果你是編程新手,這本書可以讓你以最好的方式開始編程,并為你介紹了最佳的編程實踐?!薄 狝lberto Moriconi “……這是學習C++語言極好的一本書。在介紹面向?qū)ο缶幊桃约癈++類的設計和實現(xiàn)之前,先介紹了C++標準庫,這樣很容易很快就編寫出有用的程序。這本書的組織方式、寫作思路和風格都很出色。” ——James M. Scott
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載