在 C++ 中初始化变量的 = 和 {} 语法之间的区别

Adi*_*ash 1 c++ initialization c++11

我已经阅读了很多 C++ 代码,并且遇到了两种初始化变量的方法。

方法一:

int score = 0;
Run Code Online (Sandbox Code Playgroud)

方法二:

int score {};
Run Code Online (Sandbox Code Playgroud)

我知道这int score {};会将分数初始化为 0,所以也会int score = 0;

这两者有什么区别?我已经阅读了初始化:括号与等号,但这并没有回答我的问题。我想知道等号大括号之间有什么区别,而不是括号。在什么情况下应该使用哪一个?

son*_*yao 7

int score = 0;执行复制初始化,作为效果,score被初始化为指定值0

否则(如果 的T和 的类型都不other是类类型),如有必要,将使用标准转换将 的值转换other为 的 cv 非限定版本T

int score {};使用从 C++11 开始支持的花括号初始化器执行值初始化,作为效果,

否则,对象是零初始化的

score是内置类型int,它最后被零初始化,即初始化为0

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

  • 这取决于您要初始化的内容。在所写的示例中没有区别。 (2认同)