程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C++模板

C++模板

編輯:關於C語言

本篇文章部分參考自互聯網有關模板的解釋,再經過自己實踐及理解而寫作出來。感謝互聯網資料的幫助。   模板定義: 模板就是實現代碼重用機制的一種工具,它可以實現類型參數化,即把類型定義為參數, 從而實現了真正的代碼可重用性。模板可以分為兩類,一個是函數模板,另外一個是類模板。   模板實現的寫作方法:  1.函數模板的寫法 函數模板的一般形式如下: Template <class 或者也可以用typename  T> 返回類型 函數名形參表)
{// 函數定義體 }
說明: template 是一個聲明模板的關鍵字,表示聲明一個模板關鍵字class 不能省略,如果類型形參多於一個 ,每個形參前都要加class < 類型 形參表> 可以包含基本數據類型可以包含類類型. 注意:每個模板函數前面都要加上“Template <class 或者也可以用typename  T> ”這一行。 //在template語句與函數模板語句之間不允許有別的語句; 請看以下程序: //mian.cpp #include  <iostream> // 聲明一個函數模版, 用來比較輸入的兩個相同數據類型的參數的大小,class 也可以被typename 代替, //T 可以被任何字母或者數字代替。 template  <class  T> T max(T &x,T &y)//主要必須是參數引用,不能是 T min(T x,T y) {    if (a>b)
 {
  return a;
 }
 return b; } void  main( ) {  int i1 = 3,i2=5;
 char c1='a',c2='b';
 double d1=0.35,d2 = 0.2;
 
 cout<<"for int最大的為:"<<max(i1,i2)<<endl;
 cout<<"for char最大的為:"<<max(c1,c2)<<endl;
 cout<<"for double最大的為:"<<max(d1,d2)<<endl; }   2.  類模板的寫法 定義一個類模板: Template < class 或者也可以用typename  T > class 類名{

};
說明:其中,template 是聲明各模板的關鍵字,表示聲明一個模板,模板參數可以是一個,也可以是多個。 每個前面要有class或typename,用逗號隔開 注意:每個模板類數前面都要加上“Template <class 或者也可以用typename  T> 這一行。 例如:定義一個類模板: // template.h
#paragm once   template <typename  T1,typename  T2> class  myClass{ private :       T1 I;       T2 J; public :       myClass(T1 a, T2 b);//若成員函數中使用了模板,則此函數需要在類體外定義!!!       void  show(); };   //構造函數 template  <typename  T1,typename  T2> myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}   void show(); template  <typename  T1,typename  T2> void  myClass<T1,T2>::show() {       cout<<"I=" <<I<<", J=" <<J<<endl; }   注意:每個模板類的成員函數前都必須加上模板聲明template  <typename  T1,typename  T2> ,然後接下來命名類似於普通類,但必須加上類參數myClass<T1,T2>   // run.cpp #include  "template.h" #include  <iostream> using namespace std;  void  main() { //什麼一個類的對象類似於普通類對象聲明,但必須實例化類模板參數,如:myClass<int ,int > ,其余的調用函數方法跟普通類一樣    myClass<int,int>class1(1,2);
 class1.show();    myClass<char,char>class2('a','b');
 class2.show(); }   3.非類型模版參數
一般來說,非類型模板參數可以是常整數包括枚舉)或者指向外部鏈接對象的指針。 那麼就是說,浮點數是不行的,指向內部鏈接對象的指針是不行的。
template <typename  T, int  MAXSIZE> class  Stack{ Private:         T elems[MAXSIZE]; … }; Int main() {         Stack<int , 20> int20Stack;         Stack<int , 40> int40Stack; … };   注意:最主要是注意格式,特別是類模板 定義的格式 和 實例化類模板的格式 ,函數模板定義時參數用引用& !

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved