int x{}; 之间有区别吗?和int x = 0;?

新手上路,请多包涵

我理解 int x{}; 是一种默认初始化,但它与写 int x = 0; 完全一样吗?

原文由 mr_T 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 762
2 个回答

在这种情况下,结果是相同的。

int x{}; 是一种默认初始化

不完全是。请参阅 默认初始化

int x{};值初始化(C++11 起),

这是使用空初始化器构造变量时执行的初始化。

在这种情况下值初始化的效果(即既不是类类型也不是数组类型)是:

  1. 否则,对象被 零初始化

最后,在这种情况下, 零初始化 的效果是:

如果 T 是标量类型,则对象的初始值是显式转换为 T 的 整数常量零

另一方面, int x = 0;复制初始化x 被初始化为 0

正如@PaulR 所提到的, int x{}; 仅受 c++11 支持,而 int x = 0 没有这样的限制。

原文由 songyuanyao 发布,翻译遵循 CC BY-SA 3.0 许可协议

在这种情况下,它们是相同的。 int x{} 将以与 x static int x 即为零。也就是说,我发现 int x = 0 更清晰,它的好处是它适用于较旧的 C++ 标准。

原文由 Bathsheba 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题