初始化、赋值 (initialization, assignment)

初始化、赋值 (initialization, assignment)#

C++ 中存在初始化与赋值的区别.

初始化是在构造新对象时提供一个初始值:

1int value = 0;

赋值是更改已有对象的内容:

1int value;
2value = 0;

注意到了吗? = 根据情况不同, 可能是初始化或赋值. 这真的很烦, 所以我更倾向于用 {} 进行初始化, 只在赋值时使用 =:

1int value{0};  // 初始化为 0
2
3int copy{value};  // 初始化
4copy = value;     // 赋值

交叉内容#

初始化、赋值与 const#

const 限定的对象不能被修改, 因而只能进行初始化, 不能赋值.

1int const a;  // 错误: 未初始化 const 限定的对象
2
3int const b{0};  // 必须在这里初始化它
4b = 3;           // 错误: 试图修改 const 限定的对象

初始化、赋值与引用#

引用在声明时必须确定引用的对象, 因而必须被初始化, 往后对它的所有操作都是对其引用的对象进行:

1int& a;  // 错误: 未初始化引用
2
3int value{0};
4int& reference{value};  // 必须在这里初始化它
5reference = 3;          // 相当于 value = 3

相关解答#