c++ - 为什么在 C++ 中有不同的变量初始化方式?

标签 c++ c++11 variables initialization

自 2011 年 C++ 标准修订版以来,可以通过以下三种不同方式初始化变量。

int i = 0;
int i (0);
int i {0};

据我所知,所有三种不同的初始化都具有相同的效果。如果它们都具有相同的效果,为什么不像第一种那样坚持一种初始化方式呢?是否有任何特殊需要通过将变量的初始值括在 () 或 {} 中来初始化变量?

最佳答案

不禁止这三个中的任何一个的原因是为了保持向后兼容性。

在生产中,有大量代码是用这三种方式中的每一种编写的。如果要更改标准,则需要重写工作代码,从而导致成本和可能的错误。由于 C++ 委员会非常重视向后兼容性,所以我们最终会遇到这种情况。它仍然比 Python 等其他语言要好得多,在 Python 中,从小版本到小版本,您需要重写代码以格式化字符串,或者从零循环到十。

如果可以选择,请选择 {0},它被称为统一初始化是有原因的:-)

关于c++ - 为什么在 C++ 中有不同的变量初始化方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62756177/

相关文章:

c++ - 了解 SystemC 中的类型

c++ - 为什么合并的上限和下限比较总是评估为真?

c++ - 如果std::is_trivial_v <T>为true,则std::is_standard_layout_v <T>始终为真吗?

c++ - 关联 std::tuple 容器

java - Java中的类作为变量

当请求时,PHP 将 mysql 查询作为变量传递给第二个 php 脚本

c++ - 未找到 TCS34725 ... 检查您的连接

c++ - 在 C++ 中通过引用传递三维数组

c++11 - 什么时候应该使用静态数据成员与 const 全局变量?

Javascript 全局变量