如果我们只有一个成员,那么结构和联盟之间有什么区别吗?

时间:2014-10-26 11:25:13

标签: c++ c c++11 struct unions

我想知道一个成员数据类型的结构和联合之间的区别,如果有的话。

1 个答案:

答案 0 :(得分:31)

在C中:无。着名的“节省空间的笑话”#define struct union几乎不是一个玩笑。

在C ++ 98中:联合只能有POD members,非联合类可以有任意成员。

在C ++ 11中:联合可以拥有对象类型的任意数据成员(但不是引用类型),但是它们的使用比非联合类的使用更受限制。 (即:一个联合不能有虚拟成员函数,不能是基类,也不能有基类。)另外,你必须编写更多的代码来使一个成员联合工作而不是一个成员的非联合类因为你必须自己编写构造函数和析构函数。