2008年8月17日 星期日

c++ - 類別範本 (class template)

範本類別是利用以型別曖昧狀態定義的類別。使用範本類別的功能,可以製作對應多個型別的類別。


#include <iostream>
using namespace std;

template <class T>
class Rectangle{
 public:
  Rectangle(T n1,T n2,T n3, T n4){
   left = n1; top=n2; width=n3; height=n4;
  }
  T GetRight() {
   return left + width;
  }
  T GetBottom(){
   return top+height;
  }

  T left,top,width,height;
};

int main()
{
 Rectangle<int> rect1(50,50,100,100);
 cout << rect1.GetRight() << endl;

 Rectangle<double> rect2(50.5,50.5,100.1,100.1);
 cout << rect2.GetRight() << endl;
 return 0;
}

以上程式碼是宣告一個新的class,必需要注意的是,template <class T>與下面定義的class是一體的,所以,每定義一個新的class時,必需要針對那一個class新增一個template敘述句

產生範本類別時,可以像下列一樣指定使用型。這時指定曖昧的型。

Rectangle<int> rect; // 指定T為int型
Rectangle<double> rect; // 指定T為double型


當範本引數為2個以上時,可以像下列一樣指定多個型別。

template<class T1,class T2> // 有兩個範本引數
class Rectangle{
……
};

……
Rectangle<int,char> rect; // 指定int型和double型

同樣的,template<class T1,class T2>與template關鍵字下面定義的class是一體的

參考資料:新C++學習繪本

沒有留言: