静态变量是决定性的初始变量,当地变量为t?
见固定变量是如何实施的。 对他们的记忆在链接时间分配,其初步价值也在链接时间提供。 没有管理费。
而另一方面,地方变量的记忆则在时间分配。 st势必须增加。 你们不知道以前的情况。 如果你想要的话,你可以清楚地看到,记忆(零),但会带来管理费。 C++哲学是“你不支付你不使用的东西”,因此,以违约方式记忆为零。
OK,但为什么静态变量被初步定为零,而不是其他一些数值?
诚然,你一般希望与这一变量做一些事情。 那么,你们知道这是否已经启动? 你们可以产生静态的 b变。 但是,它也必须可靠地成为某种东西(最好是假的)。 How about a pointer? 你们想要的是,它比某些任意的垃圾开始。 如何构造/记录? 它内部还有其他一些数据成员。 将它们全部用于其违约价值是有意义的。 但是,为了简单起见,如果你使用“初始到0”战略,你就不必检查个别成员并检查其类型。 You can Just initialize the all memory area to 0:
这实际上不是一个技术要求。 如果违约价值不是0,但仍然是决定性的,则初始化的语义仍可视为衰弱。 但是,这种价值应当是什么? 你可以非常容易地解释为何使用0(尽管这确实稍为武断),但解释-1或1024似乎更为困难(特别是变数可能不足以保持这一价值等)。
你们总是能够明确开始变数。
而总是,C++标准第8.5.6段说,“每个固定储存期的物体,在方案启动时,均应零开始”。
详情请参见这些其他问题: