《C++ Templates 中文版》[陳偉柱譯] 續2

 第3部分 模板與設計  
第14章 模板的多態威力  
14.1 動多態  
14.2 靜多態  
14.3 動多態和靜多態
 14.3.1 術語
 14.3.2 優點和缺點
 14.3.3 將兩種多態結合起來  
14.4 新形式的設計模板  
14.5 泛型程序設計  
14.6 本章後記  
第15章 Traits 與Policy類  
15.1 一個實例:累加一個序列
 15.1.1 Fixed Traits  【獲得T的相關類型】
 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 組合多個Policies 和/或 Traits  
 15.1.8 運用普通的迭代器進行累積  
15.2 類型函數  
 15.2.1 確定元素的類型  【從實參vector<T>中獲得T!trait+部分特化】
 15.2.2 確定class類型  
 15.2.3 引用和限定符  
 15.2.4 Promotion trait  
15.3 Policy Traits  
 15.3.1 只讀的參數類型  
 15.3.2 拷貝、交換和移動  
15.4 本章後記 
第16章 模板與繼承  
16.1 命名模板參數
【缺省參數機制不錯,但當需要改變一個時,不得不提供前面所有參數。如果能a<p3=1>多好!】
虛繼承】 

16.2 空基類優化  【空類對象不能爲0-->指針數組。有例外】
 16.3.1 佈局原則
 16.2.2 成員作基類  
16.3 奇特的遞歸模板模式 【CRTP能統計構造個數】 
16.4 參數化虛擬性  【虛擬性?virtual】
16.5 本章後記
 
第17章 Metaprograms  【整數計算,枚舉常數,遞歸模板,中止模板】
17.1 Metaprogram的第一個實例  
17.2 枚舉值 和 靜態常量  【靜態常量也可以,枚舉值迫使編譯器按常數準備,不佔內存,所以優選】
17.3 第2個例子:計算平方根  【ifthenelse模板
17.4 使用演繹變量  
17.5 計算完整性  
17.6 遞歸實例化 和 遞歸模板實參  
17.7 使用Metaprograms來展開循環 【向量計算取代循環!】
17.8 本章後記 
第18章 表達式模板  
18.1 臨時變量和分割循環  
18.2 在模板實參中編碼表達式  【用表達式模板實現表達】
 18.2.1 表達式模板的操作數  
 18.2.2 數組類型  
 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 Holders and Trules  
 20.1.1 安全處理異常  
 20.1.2 Holders 
 20.1.3 作爲成員的Holders  
 20.1.4 資源獲取於初始化  
 20.1.5 Holder的侷限  
 20.1.6 複製Holders  
 20.1.7 跨函數調用地複製Holder  
 20.1.8 Trules  
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章 Tuples
21.1 Duos
21.2 可遞歸Duo
 21.2.1 域的個數
 21.2.2 域的類型
 21.2.3 域的值
21.3 Tuple構造
21.4 本章後記
第22章 函數對象和回調  【函數指針、仿函數纔是對象,屬於回調使用】
22.1 直接調用、間接調用與內聯調用
【直接調用(call 地址)vs間接調用(函數地址在內存或寄存器),前者高效】
【編譯函數:定義-->帶名實體,調用-->帶名調用,鏈接地址】 
【函數指針看不見函數名稱,只有生成間接調用】
【模板回調主要是直接調用和內聯調用】
【函數數組都decay成指針,(*f)()就是f()】
【多繼承必然使得成員函數指針複雜(需要計算偏移),虛函數加劇複雜度】


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 其它的重載情況  
參考資料  
術語表 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章