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产生好久后才出现这个关键字。