【发布时间】:2015-07-21 15:50:05
【问题描述】:
在cpp reference 之后,我会理解在 C++11 之前的行为是让它未初始化(如果联合是 POD 类型,这很可能),而无论如何它都会调用一个默认构造函数,从 C+ 开始+14。
这个说法正确吗?
编辑:我很困惑,因为在 C++ Primer(第 5 版,涵盖 C++11)中,可以阅读“像内置类型一样,默认情况下联合未初始化”(第 848 页) ),但更进一步,有“......联合(成员)将被默认初始化,这意味着联合的第一个成员将被初始化”(第 851 页)。
这对我来说似乎是矛盾的,说默认情况下联合未初始化,然后说作为联合的数据成员的默认初始化将初始化联合的第一个成员。
【问题讨论】:
-
链接和工会有什么关系?
-
@KerrekSB 我的理解是联合是类(可能是 POD 类型),并且链接解释了在非 POD 类的情况下“默认初始化的影响”(以及隐含的 POD类)。
-
C++ 中的默认初始化包括不初始化 'char'、'int'、...
标签: c++ c++11 initialization c++14