【问题标题】:What does "type name{}" mean in C++? [duplicate]“类型名称{}”在 C++ 中是什么意思? [复制]
【发布时间】:2013-03-18 09:21:43
【问题描述】:

我在源码中发现了如下构造:

variable_type variable_name{func(arg1, arg2, arg3)};

在下一个版本的代码中,这个结构被下面的替代了:

variable_type variable_name = func(arg1, arg2, arg3);

所以,我的问题是第一行是什么意思,它与第二行有什么不同?我也想知道为什么使用第一行而不是第二行可能更好或更差?

【问题讨论】:

  • 这种情况下也是一样的。见here
  • @Mat 我认为这不是正确的副本,因为它处理带有 initializer_list 构造函数的类。
  • 具体情况取决于variable_type的构造函数和func的返回类型。

标签: c++ syntax


【解决方案1】:

这是一个 C++11 大括号初始化示例。

请参阅以下文章:

https://www.informit.com/articles/article.aspx?p=1852519

【讨论】:

  • 不,不是,它也适用于非容器类型。
  • 对,改成“大括号初始化”。
【解决方案2】:

第一行是 C++11 的一个新特性,称为 uniform initialization。这种初始化风格也可以用在定义了一个接受std::initializer_list的构造函数的类上,在这种情况下,这样的构造函数具有优先权。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2020-01-01
    • 2018-03-25
    • 1970-01-01
    • 2015-06-25
    • 2019-12-08
    • 2013-02-12
    相关资源
    最近更新 更多