天天看點

c++模闆程式設計

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>