【发布时间】:2020-02-23 16:56:13
【问题描述】:
我正在调试一些与此基本相同的代码:
struct Foo { int a; int b; };
struct Bar { Bar() {} Foo foo{0}; };
当我创建Bar 的实例时,似乎a 和b 都被初始化为零。这是有保证的吗?在规范中哪里可以找到?
【问题讨论】:
-
try:
struct Foo { int a{}; int b{}; };注意变量名后面的大括号。那么您将始终获得初始化值。如果您需要使用其他值和定义的行为进行初始化,则需要为每个其他类编写一个 ctor -
@skratchi.at 那些不是括号(使用括号意味着别的)
-
表面上这么简单的问题,但是 C++ init 太复杂了,我明白你为什么要问它。我可能会猜测您在这里得到了正确的聚合初始化但是没有深入研究标准我不确定答案是什么。有多难过?
-
这是针对数组的,但是... stackoverflow.com/questions/1065774/…
标签: c++ initialization