2

我遇到了一个模板问题,您必须创建一个 T 类型的元素,构造它,然后将其添加到数组中。

我不确定如何做构造部分。

我们只是做

T element;

或者

T element = T();
4

1 回答 1

2

如果你T的意思是类类型,我会说这个版本:

T element;

只要元素是可默认构造的(如果不是,则上述方法均不起作用)是可取的。使用第二个版本:

T element = T();

意味着创建一个类型的临时对象,T从中element获取复制构造或移动构造。此外,如果您的类型不可移动,则不会编译。

另一方面,当元素是基本类型时,T element = T()将提供值初始化。因此,例如, when T = intelement将被零初始化,而在第一种情况下,它将未初始化。

在 C++11 中,最好的方法(如评论中的mfontanini所建议)是使用具有统一初始化语法的直接初始化(以防止编译器将其解析为函数声明):

T element{};

这将为您提供类类型的默认构造和基本类型的值初始化。

于 2013-04-23T18:38:19.777 回答