c++ 模板的使用

  今天在寫程序時感覺因爲函數參數類型的問題而重複編邏輯相同的函數比較煩,遂翻書找到了模板,並整理了C++模板的簡單使用方法。
  c++模板有函數模板類模板兩種使用方法。

  函數模板

  定義

   在函數前加上 template<class ElementType> 其中class爲關鍵字 與可以爲typename,ElementType爲形式參數名,就是自己定義的名字。
需要多個形式參數名時這樣: template <class T1,class T2>

  使用

   舉個例子: template<class ElementType>
                      void Fun (ElementType a){    ElementType  b=a; }
                      使用時:int   a=2; Fun(a);
                                    double  b=2.0;Fun(b); 從而可以不必爲類型問題而煩惱。

  類模板

  定義

   與函數模板相似,也是以template開頭,隨後是用尖括號括起來的模板形式參數列表,每個形式參數之前都有關鍵字(class或者typename)標識
   如 template<class ElementType> calss A{ ...};
   如果成員函數不是在聲明中定義,則成員函數要以template<class ElementType>開頭,而且成員函數定義時,二元作用域運算符::之前的類名要用  類名<ElementType>,以此將成員函數的定義與類模板以及模板參數聯繫起來。

  使用

  在實例化類對象時,形式是:類名<參數類型>  對象名。
  如若定義了一個類模板Stack,則在實例化時這樣:Stack<int> intStack;
  int 會取代ElementType。
  其成員函數的使用和一般類一樣。

 注意

 1.函數模板在使用時,編譯器需要根據實在參數的類型來定義函數模板的實例,函數調用調用的就是實例化得到的模板函數。
 2.類模板在使用時,編譯器需要根據實在參數的類型來得到具體的類,這個具體的類稱之爲類模板實例(或模板類),類模板實例可以實例化對象。
 3.模板雖然只編寫一次,但是編譯後的代碼仍然包含了多個是實例化函數或者類的代碼,所以模板不會減少編譯後代碼的量,但是很好地支持了軟件的重用,以有利於軟件的一致性維護。

 



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