c++ template class typename

声明模板的方式dom

1 template<typename T>
2 template<class T>

结论:二者同样,但使用typename更稳spa

 

没搞懂,记录一下,都是其余人的解释code

 

实际上能够说没有区别。

按 C++ 标准来讲,template<typename T> 用于基础数据类型,typename 指类型名,T 能够取 char int double 等。

template<class T> 用于类,T 能够取任何类。

可是这里有一个问题,结构体应该用 typename 仍是 class? 结构体确定不是基础数据类型,但也不是类。

因此实际状况是,template<class T> 的 T 也能够取基础数据类型,tempate<typename T> 的 T 也能够取类。

但有一个特例,就是当 T 是一个类,而这个类又有子类(假设名为 innerClass) 时,应该用 template<typename>:

typename T::innerClass myInnerObject;

这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象,而不是声明 T 的静态成员,而 typename 若是换成 class 则语法错误。
对象

相关文章
相关标签/搜索