还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

C++ template中typename和class的区别

来源:     2016-01-25 10:37:40    人气:     我有话说( 0 人参与)

历史原因,以前是用class,后来C++ Standard 出现后,引入了typename, 所以他们是一样的。但是,又有一些微妙的不同,因为有时候,你不得不使用typename。

历史原因,以前是用class,后来C++ Standard 出现后,引入了typename, 所以他们是一样的。

但是,又有一些微妙的不同,因为有时候,你不得不使用typename。

1. 在声明 template parameters(模板参数)时,class 和 typename 是可互换的。

2. 用 typename 去标识 nested dependent type names(嵌套依赖类型名),在 base class lists(基类列表)中或在一个 member initialization list(成员初始化列表)中作为一个 base class identifier(基类标识符)时除外。

For example: 

using namespace std; 

template <class T> int vcount(vector<T> v) { 
    int i; 
    typename vector<T>::iterator vi; 
    for(i=0,vi=v.begin(); vi!=v.end(); i++,vi++) 
    ; 
    return(i); 
}

更详细的可以参考MSDN资料:

http://blogs.msdn.com/b/slippman/archive/2004/08/11/212768.aspx

C++ template typename class

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: