3.5 赋值和初始化
在很多方面, 最有趣的操作符是赋值, 表示为=。它为一个变量赋予一个新的值。例如:
最后一次赋值需要注意。首先, 很明显=并不意味着等于, a不等于a+7。它意味着赋值, 也就是将一个新的值赋予一个变量。a=a+7所做的事如下:
1) 首先, 得到a的值, 这里是整数4。
2) 其次, 将7和4相加, 得到整数11。
3) 最后, 将整数11赋予a。
我们也可以通过字符串来说明赋值:
以上, 我们使用“以…开始”和“获得”来区别两种相似的操作, 但两者在逻辑上是有区别的:
初始化(给一个变量它的初值)。
赋值(给一个变量一个新的值)。
这些操作是如此相似, 因此C++(www.cppentry.com)允许我们对它们使用相同的符号(=):
但是, 赋值和初始化在逻辑上是不同的。你可以通过类型描述(如int或string)来区分它们, 初始化总是从类型描述开始, 而赋值并不需要这样做。从原则上来说, 初始化时变量总是空的。另一方面, 赋值在放入一个新的值之前, 首先必须将旧的值清空。你可以将变量看做是一种小的盒子, 值是一个可以放入其中的具体东西(例如一枚硬币)。在初始化之前盒子是空的, 但是在初始化之后它总是包含一枚硬币, 因此为了在里面放入一枚新的硬币, 你(即赋值操作符)首先需要移走旧的东西(“销毁旧的值”), 而且你不能留下一个空盒子(必须赋予一个值)。在计算机内存中并不完全如此, 但是它对于我们理解后面的内容没有坏处。