初始化、赋值 (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