问题描述
在定义模板以使用自定义数据类型时,我们遵循如下语法:
template<class T>
class Operators{
public:
T variable1 ;
}
为什么我们需要在这里使用“class”关键字,为什么简单的模板不起作用,还有很多地方也用“typename”代替“class:”,再说一遍,为什么要使用?
还有什么时候用“class”关键字,什么时候用“typename”关键字?
解决方法
使用 class 或 typename 是完全相同的事情,主要是偏好问题。
有些人更喜欢使用 typename,因为类型可能不是类,因此 typename 看起来更清晰。
问题是关键字 typename 有另一个用途,因此将两者放在同一行可能会非常混乱:
template<typename Vector,typename Iterator = typename Vector::iterator>
在这种情况下,类可以帮助改善一些差异。
template<class Vector,class Iterator = typename Vector::iterator>
,
template class
定义了一个模板类。
template void f()
定义了一个模板函数。
template using t
定义了一个模板别名。
为什么我们需要在这里使用“class”关键字,为什么简单的模板不起作用
因为 template
不是类所独有的。
还有什么时候用“class”关键字,什么时候用“typename”关键字?
在这种情况下,它们是确切的同义词和偏好问题。选择一个并坚持下去。