首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >直接初始化是否等同于直接列表初始化?

直接初始化是否等同于直接列表初始化?
EN

Stack Overflow用户
提问于 2022-04-25 02:53:30
回答 1查看 87关注 0票数 0

我有以下例子:

代码语言:javascript
复制
struct S{
   int x, y;
}

S s1{1};    // direct-initialization or direct-list-initialization ?
S s2{1, 2}; // direct-initialization or direct-list-initialization ?
S s3(1);    // direct-initialization or direct-list-initialization ?
S s4(1, 2); // direct-initialization or direct-list-initialization ?
int i1{10}; // direct-initialization or direct-list-initialization ?
int i2(10); // direct-initialization or direct-list-initialization ?

我的问题

  • 我只需要知道上面的语句中初始化的类型是什么?
  • 这里有什么标准报价吗?

我已经检查过直接初始化与直接列表初始化(C++)的问题了,但还没有得到严格的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-25 03:33:25

来自直接初始化文档

T object ( arg ); T object ( arg1, arg2, ... ); (1) T object { arg }; (2) (自C++11起) T ( other ) T ( arg1, arg2, ... ) (3)在下列情况下执行直接初始化

    1. 使用非空括号大小的表达式或大括号列表进行初始化(自C++11起)

    1. 用一个大括号括起来的初始化器初始化非类类型的对象(注意:用于类类型和其他使用大括号-init-list,参见列表-初始化)

    1. 通过函数强制转换或带括号的表达式列表初始化prvalue临时(直到C++17) prvalue的结果对象(自C++17)

来自列表初始化

Direct-list-initialization

T object { arg1, arg2, ... }; (1) T { arg1, arg2, ... } (2)

现在我们可以用上面这些来回答你的问题了。

代码语言:javascript
复制
S s1{1};    // direct-list-initialization from direct-list init point 1 above
S s2{1, 2}; // direct-list-initialization from direct-list init point 1 above
S s3(1);    // direct-initialization from direct init point 1 above
S s4(1, 2); // direct-initialization from direct init point 1 above
int i1{10}; // direct-initialization from direct init point 2 above
int i2(10); // direct-initialization from direct init point 1 above
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71994048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档