自 2011 年 C++ 标准修订版以来,可以通过以下三种不同方式初始化变量。
int i = 0;
int i (0);
int i {0};
据我所知,所有三种不同的初始化都具有相同的效果。如果它们都具有相同的效果,为什么不像第一种那样坚持一种初始化方式呢?是否有任何特殊需要通过将变量的初始值括在 () 或 {} 中来初始化变量?
最佳答案
不禁止这三个中的任何一个的原因是为了保持向后兼容性。
在生产中,有大量代码是用这三种方式中的每一种编写的。如果要更改标准,则需要重写工作代码,从而导致成本和可能的错误。由于 C++ 委员会非常重视向后兼容性,所以我们最终会遇到这种情况。它仍然比 Python 等其他语言要好得多,在 Python 中,从小版本到小版本,您需要重写代码以格式化字符串,或者从零循环到十。
如果可以选择,请选择 {0}
,它被称为统一初始化是有原因的:-)
关于c++ - 为什么在 C++ 中有不同的变量初始化方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62756177/