【发布时间】:2014-07-04 16:08:55
【问题描述】:
您能否解释一下对象定义如何与变量初始化绑定,表示初始化。
#include <iostream>
int a = 5; //definition
int main{ std::cout << a; }
秒。 1.8/1:
对象是由定义创建的,[...]
a 静态初始化为5。初始化作为对象定义的一部分发生,还是独立于定义?
【问题讨论】:
标签: c++ initialization definition
您能否解释一下对象定义如何与变量初始化绑定,表示初始化。
#include <iostream>
int a = 5; //definition
int main{ std::cout << a; }
秒。 1.8/1:
对象是由定义创建的,[...]
a 静态初始化为5。初始化作为对象定义的一部分发生,还是独立于定义?
【问题讨论】:
标签: c++ initialization definition
来自第 7/8 节:
定义会导致保留适当数量的存储空间并完成任何适当的初始化 (8.5)。
所以是的,定义会导致初始化。
但是,初始化(和一般的对象创建)可以在没有定义的情况下导致,这由您的引用 (§1.8/1) 的省略部分描述:
对象由定义(3.1)、新表达式(5.3.4)或 在需要时由实施 (12.2) 执行。
【讨论】:
对象的生命周期从其初始化完成后开始。不初始化对象是不可能定义的。即使你说int a;,你也定义并初始化a,尽管这种特殊类型的初始化(称为“默认初始化”)什么都不做并且使对象a未初始化。
【讨论】: