![]() |
1
15
根据C++标准(第9章5.1节,引用其他答案):
我第一次链接到 Wikipedia article about POD types 哪些状态:
和
第二段的第一句话可能会让你认为C++只允许POD类型成为联盟的一部分。事实并非如此,因为它允许具有私有成员的类成为联合的一部分:
上面用msvc++编译的程序打印出来:
|
![]() |
2
5
C++标准对可以放置在一个联合内部的数据类型提出了某些限制。在9.5.1中,标准为:
所以您的程序不能工作,因为您显式地定义了一个构造函数,因此您的对象违反了重要的构造函数限制。 |
![]() |
3
2
在C++中,联合可能不包含具有(非平凡)构造函数或析构函数的类。这是因为编译器无法告诉创建或销毁联合实例时要使用哪个构造函数或析构函数。 |