gpt4 book ai didi

c++ - 在 C++ 模板中,如何构造未知类型 (T) 的元素?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:52 25 4
gpt4 key购买 nike

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

我不确定如何进行构造部分。

我们只是做

T element;

T element = T();

最佳答案

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

T element;

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

T element = T();

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

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

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

T element{};

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

关于c++ - 在 C++ 模板中,如何构造未知类型 (T) 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com