當我研究關於「類模板部分特例」,我讀了下面的代碼C++類參數是什麼?
#include <iostream>
using namespace std;
template <typename T1, typename T2>
class stream
{
public:
void f() { cout << endl << "stream<typename T1, typename T2>::f()"; }
};
template <typename T1>
class stream<T1, int>
{
public:
void f() { cout << endl << "stream<typename T1, int>::f()"; }
};
int main()
{
stream<char, float> si ;
stream<double, int> sc ;
si.f();
sc.f();
cout << endl;
return 0 ;
}
在上面的代碼,我不能看得懂行
class stream<T1, int>
無論這兩個參數T1,int是該類或其他類的構造函數的參數嗎? 如果我們在< ...,...>中指定一些列表,那麼這是什麼?如何理解這一點?
我明白了,當我們稱之爲「stream sc」時這行第二個模板定義將被調用。其實我的疑問是行(第二個模板定義)「類流」是必要的?相反,我們可以在上面的一行「template 中指定它,爲什麼我們必須在下一行指定它,我的意思是我的類聲明? –
osdevkid
2011-05-23 12:43:23
它是這樣,你可以提供2個實現,一個真正的通用的(第一個)和更優化的第二個參數,任何以int作爲第二個參數的調用都將進入優化的實現。 – ColWhi 2011-05-23 12:51:22