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