初始化和定义之间的关系

时间:2014-07-04 16:08:56

标签: c++ initialization definition

你能解释一下对象定义如何与变量初始化绑定,表示初始化。

#include <iostream>
int a = 5; //definition

int main{ std::cout << a; }

秒。 1.8 / 1:

  

对象由定义[...]

创建

a已静态初始化为5。初始化是作为对象定义的一部分发生的,还是独立于定义?

2 个答案:

答案 0 :(得分:0)

来自§7/ 8:

  

定义会导致保留适当的存储量并完成任何适当的初始化(8.5)。

所以是的,定义会导致初始化。

但是,初始化(和一般的对象创建)可能是在没有定义的情况下引起的,定义由引用的省略部分(§1.8/ 1)描述:

  

对象由定义(3.1),new-expression(5.3.4)或   在需要时通过实施(12.2)。

答案 1 :(得分:0)

对象的生命周期在其初始化完成后开始。如果没有初始化对象,则无法定义对象。即使您说int a;,也可以定义并初始化a,尽管这种特殊的初始化(称为“默认初始化”)不执行任何操作,并使对象a未初始化。