STL中typename關鍵字的兩個做用 編譯器
1 在類型定義時申明某個關鍵字是類型(如int) 編譯
2 在template聲明模板中代替class 模板
一 在類型定義時申明某個關鍵字是類型 class
例如: 變量
template <class T> 命名
class firstclass { co
typedef T firstclass_T; //在模板類firstclass中把T類型重命名爲 firstclass_T void
.........
};
template<class T>
class secondclass{
typename T::firstclass_T val; //在secondclass中用T類中的firstclass_T類型來定義變量
時用到關鍵字typename。其做用就是對C++編譯器
聲明其後的關鍵字是類型名,用於定義變量。這樣寫
要保證類型T中必定存在firstclass_T類型。
.........
};
void main()
{
secondclass < firstclass<int> > second;
}
二 在template聲明模板中代替class
template <class T> 也能夠寫成 template <typename T>。
緣由是因爲關鍵字class和類關鍵字class相同爲了不歧義引入typename。typename在
STL產生好久後纔出現這個關鍵字。