【发布时间】:2014-05-10 23:16:42
【问题描述】:
谁能解释一下为什么下面的程序会导致编译问题。我已经通过VS2013编译了源代码。
#include <iostream>
using namespace std;
// Do not work
union myuni
{
string str;
};
void main()
{
}
联合声明时是否需要固定长度大小?同样的场景也适用于结构。
【问题讨论】:
-
自 c++11 起才允许联合中的非 POD 类型。
-
@tgmath 即使在 C++11 中,您也需要用户定义的构造函数等,而这些构造函数又使用placement new 来初始化正确的成员。