Introduction
在C++代码中,变量的声明和赋值是两个过程。声明是给变量分配内存,赋值是给内存赋值(即给变量赋值)。在声明的过程中同时给变量赋值叫做初始化,但是初始化的赋值和普通的赋值在C++编译器看来是不一样的。
const类型的变量不能进行赋值,只能初始化。引用类型的变量也是一样。
Problem
1.error C2734:'b': const object must be initialied if not extern
2.error C2530:'c': references must be initialized
3.error C2758:'A::_b': must be initialized in constructor base/member initializer list
4.error C2166: I-value specifies const object
Solution
1.const类型的变量不能赋值,只能初始化
声明时赋值叫初始化,声明后赋值叫赋值(就是这么顺口呗= =)
2.引用类型的变量不能赋值,只能初始化
一般函数中的变量初始化可以用等号‘=’也可以用括号‘()’ —— const int b(5); int& c(a);
3.类成员变量在调用构造函数时必须初始化
也是const类型和引用类型。C++中给类成员初始化的唯一方式就是成员初始化列表,也就是构造函数后面跟冒号的形式
4.不能对const变量进行赋值
Summary
变量的使用过程:1、分配内初[初始化数据]
2、赋值
步骤1是声明,中括号中的内容对于一些类型的变量可有可无,但是对于const类型和引用类型的变量必须有,因为它们不能进行第二步。
本质上,初始化就是在给变量分配内存的时候“赋值”。