在C语言中,没有。著名的“节省空间的玩笑”#define struct union几乎不是一个玩笑。在C++98中,联合体只能有POD成员,非联合类可以有任意成员。在C++11中,联合体可以有任意对象类型的数据成员(但不能是引用类型),但它们的使用比非联合类更受限制。(即:联合体不能有虚拟成员函数,不能作为基类,也不能有基类。)此外,您需要编写更多的代码才能使单成员联合体工作,与单成员非联合类相比,因为您必须自己编写构造函数和析构函数。