C++模板(轉載)

http://student.csdn.net/space.php?uid=109287&do=blog&id=9926

C++模板類和類模板

2009-08-17 15:00

用相同的類模板可以組建任何類型的對象集合。在傳統C++中,可能有一個浮點數類或者一個整數類,如果使用類模板,可以定義一個對兩者都適用的類number。

類模板說明

類模板說明的一般形式是:

template <類型形參表>

class <類名>

{ //類說明體

};

template <類型形參表>

<返回類型> <類名> <類型名錶>::<成員函數1>(形參表)

{ //成員函數定義體 }

template <類型形參表>

<返回類型> <類名> <類型名錶>::<成員函數2>(形參表)

{ //成員函數定義體 }



12.3.2 使用類模板

與函數模板一樣,類模板不能直接使用,必須先實例化爲相應的模板類,定義該模板類的對象後才能使用。

建立類模板後,可用下列方式創建類模板的實例:

<類名> <類型實參表> <對象表>;

其中,<類型實參表>應與該類模板中的<類型形參表>匹配。<類型實參表>是模板類(template class),<對象>是定義該模板類的一個對象。

使用類模板可以說明和定義任何類型的類。這種類被稱爲參數化的類。如果說類是對象的推廣,那麼類模板可以說是類的推廣。

注意:類模板與模板類的區別 。

一個簡單的類模板程序(求兩個任意類型數的和)。
template<class T>
class A
{

public:
A();
A(T _a,T _b);
T sum();
private:
T a;
T b;
};


template <class T>
A<T>::A()
{
a=0;b=0;
}

template<class T>
A<T>::A(T _a,T _b)
{
a=_a;b=_b;
}
template<class T>
T A<T>::sum()
{
return (a+b);
}
void main()
{
A<int> ai(3,4);
A<double> ad(3.1,4.0);
cout<<ai.sum()<<" "<<ad.sum()<<endl;
}

程序已經在vc6.0下調試通過,以上代碼在一個文件中,別把類的聲明放在一個.h中把實現放在.cpp中,類模板不支持分離只能是類的聲明和定義放在同一個文件中。

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