【发布时间】:2013-11-14 20:39:33
【问题描述】:
C++11 让我们可以在联合中使用非 POD 类型,比如我有以下代码;
union
{
T one;
V two;
} uny;
在我班级的某个地方,一次只有一个成员会活跃,现在我的问题很简单。
- uny 的默认值是多少? - 未定义?
- 每当我的类被破坏时,哪些成员(在联合内)将被破坏(如果有的话)?
- 假设我必须使用 std::typeinfo 来跟踪哪个是活动成员,那么我应该在析构函数中显式调用该成员的析构函数吗?
- 是否有人提供语言提案的链接,该提案将工会更改为接受非 POD 类型?
【问题讨论】:
-
This answer 详细介绍了如何实际执行此操作。
标签: c++ c++11 unions discriminated-union