【问题标题】:Relationship between initializtion and definition初始化与定义的关系
【发布时间】: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


    【解决方案1】:

    来自第 7/8 节:

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

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

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

    对象由定义(3.1)、新表达式(5.3.4)或 在需要时由实施 (12.2) 执行。

    【讨论】:

    • 感谢您的规范参考。
    【解决方案2】:

    对象的生命周期从其初始化完成后开始。不初始化对象是不可能定义的。即使你说int a;,你也定义并初始化a,尽管这种特殊类型的初始化(称为“默认初始化”)什么都不做并且使对象a未初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-21
      • 2014-01-09
      • 2014-03-21
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多