內容簡介
《C和C++實務精選:C++ Templates中文版》是C++模闆編程的完全指南,旨在通過基本概念、常用技巧和應用實例三方麵的有用資料,為讀者打下C++模闆知識的堅實基礎。
全書共22章。第1章全麵介紹瞭《C和C++實務精選:C++ Templates中文版》的內容結構和相關情況。第1部分(第2~7章)以教程的風格介紹瞭模闆的基本概念,第2部分(第8~13章)闡述瞭模闆的語言細節,第3部分(第14~18章)介紹瞭C++模闆所支持的基本設計技術,第4部分(第19~22章)深入探討瞭各種使用模闆的普通應用程序。附錄A和附錄B分彆為一處定義原則和重載解析的相關資料。
《C和C++實務精選:C++ Templates中文版》適閤C++模闆技術的初學者閱讀,也可供有一定編程經驗的C++程序員參考。
作者簡介
David Vandevoorde 有20多年的C++工作經驗,C++標準委員會成員。曾因為審校The C++ Programming Language一書的草稿,獲得Bjarne Stroustrup的推薦,編寫瞭C++ Solutions。 Nicolai M. Josuttis The C++ Standard Library - A Tutorial and Reference(中文版名為《C++標準庫》)的作者,這本書齣版以後成為實際上的標準讀本。
內頁插圖
目錄
第1章 關於本章
1.1 閱讀本書所需具備的知識
1.2 本書的整體結構
1.3 如何閱讀本書
1.4 關於編程風格的一些說明
1.5 標準和現實
1.6 代碼例子和更多信息
1.7 反饋
第1部分 基礎
第2章 函數模闆
2.1 初探函數模闆
2.1.1 定義模闆
2.1.2 使用模闆
2.2 實參的演繹(deduction)
2.3 模闆參數
2.4 重載函數模闆
2.5 小結
第3章 類模闆
3.1 類模闆Stack的實現
3.1.1 類模闆的聲明
3.1.2 成員函數的實現
3.2 類模闆Stack的使用
3.3 類模闆的特化
3.4 局部特化
3.5 缺省模闆實參
3.6 小結
第4章 非類型模闆參數
4.1 非類型的類模闆參數
4.2 非類型的函數模闆參數
4.3 非類型模闆參數的限製
4.4 小結
第5章 技巧性基礎知識
5.1 關鍵字typename
5.2 使用this->
5.3 成員模闆
5.4 模闆的模闆參數
5.5 零初始化
5.6 使用字符串作為函數模闆的實參
5.7 小結
第6章 模闆實戰
6.1 包含模型
6.1.1 鏈接器錯誤
6.1.2 頭文件中的模闆
6.2 顯式實例化
6.2.1 顯式實例化的例子
6.2.2 整閤包含模型和顯式實例化
6.3 分離模型
6.3.1 關鍵字export
6.3.2 分離模型的限製
6.3.3 為分離模型做好準備
6.4 模闆和內聯
6.5 預編譯頭文件
6.6 調試模闆
6.6.1 理解長段的錯誤信息
6.6.2 淺式實例化
6.6.3 長符號串
6.6.4 跟蹤程序
6.6.5 oracles
6.6.6 archetypes
6.7 本章後記
6.8 小結
第7章 模闆術語
7.1 "類模闆"還是"模闆類"
7.2 實例化和特化
7.3 聲明和定義
7.4 一處定義原則
7.5 模闆實參和模闆參數
第2部分 深入模闆
第8章 深入模闆基礎
8.1 參數化聲明
8.1.1 虛成員函數
8.1.2 模闆的鏈接
8.1.3 基本模闆
8.2 模闆參數
8.2.1 類型參數
8.2.2 非類型參數
8.2.3 模闆的模闆參數
8.2.4 缺省模闆實參
8.3 模闆實參
8.3.1 函數模闆實參
8.3.2 類型實參
8.3.3 非類型實參
8.3.4 模闆的模闆實參
8.3.5 實參的等價性
8.4 友元
8.4.1 友元函數
8.4.2 友元模闆
8.5 本章後記
第9章 模闆中的名稱
9.1 名稱的分類
9.2 名稱查找
9.2.1 Argument-Dependent Lookup(ADL)
9.2.2 友元名稱插入
9.2.3 插入式類名稱
9.3 解析模闆
9.3.1 非模闆中的上下文相關性
9.3.2 依賴型類型名稱
9.3.3 依賴型模闆名稱
9.3.4 using-declaration中的依賴型名稱
9.3.5 ADL和顯式模闆實參
9.4 派生和類模闆
9.4.1 非依賴型基類
9.4.2 依賴型基類
9.5 本章後記
第10章 實例化
10.1 On-Demand實例化
10.2 延遲實例化
10.3 C++的實例化模型
10.3.1 兩階段查找
10.3.2 POI
10.3.3 包含模型與分離模型
10.3.4 跨翻譯單元查找
10.3.5 例子
10.4 幾種實現方案
10.4.1 貪婪實例化
10.4.2 詢問實例化
10.4.3 迭代實例化
10.5 顯式實例化
10.6 本章後記
第11章 模闆實參演譯
11.1 演繹的過程
11.2 演繹的上下文
11.3 特殊的演繹情況
11.4 可接受的實參轉型
11.5 類模闆參數
11.6 缺省調用實參
11.7 Barton-Nackman方法
11.8 本章後記
第12章 特化與重載
12.1 當泛型代碼不再適用的時候
12.1.1 透明自定義
12.1.2 語義的透明性
12.2 重載函數模闆
12.2.1 簽名
12.2.2 重載的函數模闆的局部排序
12.2.3 正式的排序原則
12.2.4 模闆和非模闆
12.3 顯式特化
12.3.1 全局的類模闆特化
12.3.2 全局的函數模闆特化
12.3.3 全局成員特化
12.4 局部的類模闆特化
12.5 本章後記
第13章 未來的方嚮
13.1 尖括號Hack
13.2 放鬆typename的原則
13.3 缺省函數模闆實參
13.4 字符串文字和浮點型模闆實參
13.5 放鬆模闆的模闆參數的匹配
13.6 typedef模闆
13.7 函數模闆的局部特化
13.8 typeof運算符
13.9 命名模闆實參
13.10 靜態屬性
13.11 客戶端的實例化診斷信息
13.12 重載類模闆
13.13 List參數
13.14 布局控製
13.15 初始化器的演繹
13.16 函數錶達式
13.17 本章後記
第3部分 模闆與設計
第14章 模闆的多態威力
14.1 動多態
14.2 靜多態
14.3 動多態和靜多態
14.3.1 術語
14.3.2 優點和缺點
14.3.3 組閤這兩種多態
14.4 新形式的設計模闆
14.5 泛型程序設計
14.6 本章後記
第15章 trait與policy類
15.1 一個實例:纍加一個序列
15.1.1 fixed traits
15.1.2 value trait
15.1.3 參數化trait
15.1.4 policy和policy類
15.1.5 trait和policy:區彆在何處
15.1.6 成員模闆和模闆的模闆參數
15.1.7 組閤多個policie和/或trait
15.1.8 運用普通的迭代器進行纍積
15.2 類型函數
15.2.1 確定元素的類型
15.2.2 確定class類型
15.2.3 引用和限定符
15.2.4 promotion trait
15.3 policy trait
15.3.1 隻讀的參數類型
15.3.2 拷貝、交換和移動
15.4 本章後記
第16章 模闆與繼承
16.1 命名模闆參數
16.2 空基類優化
16.2.1 布局原則
16.2.2 成員作基類
16.3 奇特的遞歸模闆模式
16.4 參數化虛擬性
16.5 本章後記
第17章 metaprogram
17.1 metaprogram的第一個實例
17.2 枚舉值和靜態常量
17.3 第2個例子:計算平方根
17.4 使用歸納變量
17.5 計算完整性
17.6 遞歸實例化和遞歸模闆實參
17.7 使用metaprogram來展開循環
17.8 本章後記
第18章 錶示式模闆
18.1 臨時變量和分割循環
18.2 在模闆實參中編碼錶達式
18.2.1 錶達式模闆的操作數
18.2.2 Array類型
18.2.3 運算符
18.2.4 迴顧
18.2.5 錶達式模闆賦值
18.3 錶達式模闆的性能與約束
18.4 本章後記
第4部分 高級應用程序
第19章 類型區分
19.1 辨彆基本類型
19.2 辨彆組閤類型
19.3 辨彆函數類型
19.4 運用重載解析辨彆枚舉類型
19.5 辨彆class類型
19.6 辨彆所有類型的函數模闆
19.7 本章後記
第20章 智能指針
20.1 holder和trule
20.1.1 安全處理異常
20.1.2 holder
20.1.3 作為成員的holder
20.1.4 資源獲取於初始化
20.1.5 holder的局限
20.1.6 復製holder
20.1.7 跨函數調用來復製holder
20.1.8 trule
20.2 引用記數
20.2.1 計數器在什麼地方
20.2.2 並發訪問計數器
20.2.3 析構和釋放
20.2.4 CountingPtr模闆
20.2.5 一個簡單的非侵入式計數器
20.2.6 一個簡單的侵入式計數器模闆
20.2.7 常數性
20.2.8 隱式轉型
20.2.9 比較
20.3 本章後記
第21章 tuple
21.1 duo
21.2 可遞歸duo
21.2.1 域的個數
21.2.2 域的類型
21.2.3 域的值
21.3 tuple構造
21.4 本章後記
第22章 函數對象和迴調
22.1 直接調用、間接調用與內聯調用
22.2 函數指針與函數引用
22.3 成員函數指針
22.4 class類型的仿函數
22.4.1 class類型仿函數的第1個實例
22.4.2 class類型仿函數的類型
22.5 指定仿函數
22.5.1 作為模闆類型實參的仿函數
22.5.2 作為函數調用實參的仿函數
22.5.3 結閤函數調用參數和模闆類型參數
22.5.4 作為非類型模闆實參的仿函數
22.5.5 函數指針的封裝
22.6 內省
22.6.1 分析一個仿函數的類型
22.6.2 訪問參數的類型
22.6.3 封裝函數指針
22.7 函數對象組閤
22.7.1 簡單的組閤
22.7.2 混閤類型的組閤
22.7.3 減少參數的個數
22.8 值綁定
22.8.1 選擇綁定的目標
22.8.2 綁定簽名
22.8.3 實參選擇
22.8.4 輔助函數
22.9 仿函數操作:一個完整的實現
22.10 本章後記
附錄A 一處定義原則
A.1 翻譯單元
A.2 聲明和定義
A.3 一處定義原則的細節
A.3.1 程序的一處定義約束
A.3.2 翻譯單元的一處定義約束
A.3.3 跨翻譯單元的等價性約束
附錄B 重載解析
B.1 何時應用重載解析
B.2 簡化過的重載解析
B.2.1 成員函數的隱含實參
B.2.2 細化完美匹配
B.3 重載的細節
B.3.1 非模闆優先
B.3.2 轉型序列
B.3.3 指針的轉型
B.3.4 仿函數和代理函數
B.3.5 其他的重載情況
參考資料
術語錶
前言/序言
C和C++實務精選:C++ Templates中文版 下載 mobi epub pdf txt 電子書 格式