关键字typename

1、作为类型前的标志符号

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

template<class T>
class MyClass {
	typename T::SubType * ptr; 
	/*typename指出SubType是T中定义的一个类型,因此ptr是一个指向T::SubType的指针*/
	//T::SubType * ptr1;如果不加typename,表达式被认为是T的静态成员SubType和ptr的乘积
};
void main()
{
	system("pause");
}  

2、C++中的一般规则是,除了以typename修饰以外,template内的任何标识符合都被视为一个值value,而非一个类型。

3、typename的第二个作用:在模板声明中替换关键字class。

template<typename T>class MyClass;

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/81366102