我遇到了一个模板问题,你必须创建一个T类型的元素,然后构造它然后将它添加到数组中。
我不确定如何构建构造部分。
我们只是做
T element;
或
T element = T();
答案 0 :(得分:2)
如果您的T
属于班级类型,我会说这个版本:
T element;
只要元素是默认可构造的(并且如果不是,则上述方法都不起作用)是优选的。使用第二个版本:
T element = T();
意味着创建一个T
类型的临时对象,element
可以从中复制构造或移动构造。此外,如果您的类型不可移动,则无法编译。
另一方面,当元素是基本类型时,T element = T()
将提供值初始化。因此,例如,当T = int
时,element
将被初始化为零,而在第一种情况下,它将是未初始化的。
在C ++ 11中,最好的方法(在评论中由mfontanini建议)是使用直接初始化和统一的初始化语法(以防止编译器将其解析为函数声明):
T element{};
这将为您提供类类型的默认构造和基本类型的值初始化。