1、什麼是模闆程式設計 1.1 模闆程式設計可以使你的代碼獨立于類型 1.2 模闆程式設計是一種在編譯時期用代碼生成代碼的方式 1.3 function 模闆借由參數化手段表現一整個族群的functions 1.4 class模闆可以用來管理不同型别的元素
2、模闆程式設計格式 template <模闆參數1, 模闆參數2,模闆參數3> void function(){ } 或 template <模闆參數1, 模闆參數2,模闆參數3> class A { }
3、模闆參數類型 雖然模闆是用來抽象資料型别,但是模闆參數不僅僅可以是類型參數、還包括非類型參數、模闆類參數。 3.1 template <typename T> class List { T tData; }; 這是模闆的類型參數。在模闆的作用域内T代碼的是一個資料類型。 那麼語句 List<int> stListA , 在編譯的時候執行個體化了類 class List{ int tData; }
3.2 template <int n> class Array { double dArray[n]; } 這是模闆的非類型參數。在模闆的作用域内n代碼的是一個數值。 非類型參數可以是整型、枚舉、指針、引用;【這些都可以退化成整數】 那麼語句 Array<10> stArray, 在編譯的時候執行個體化了類 class Array { double dArray[10]; }
3.3 template <template<typename X> class C> 這是模闆的模闆類參數【雙重模闆參數】。 template<typename Y> class Container1 { Y xData; };
template <template X, template<typename Y > class C > class Adaption { C<X> storage; } 模闆 Adaption有個模闆參數 Container, Container本身是個有一個型别類型參數【不具名】的模闆。 語句Adaption<int, Container > st Adaption的 執行個體化過程 Adaption<int , Container >=> Container <X>=> Container<int>