union 体可以包含具有用户定义构造函数的类的对象吗?当我尝试创建一个时,它给出了一个错误,说“union 'c'的成员'c::aa'具有用户定义的构造函数或非平凡的默认构造函数” 它是标准还是我的代码有任何错误?
我测试的代码是
class a
{
public:
int aaa;
a(){}
};
class b
{
public :
long bbb;
b() { }
};
union c
{
public :
c() {}
a aa;
b bb;
};
最佳答案
在 C++11 之前,答案是否定的——union
只能包含值类型(借用托管代码中的术语),即只包含的类型数据成员。
Union
在所有成员之间共享内存占用。在 union 中拥有复杂的成员会导致这样一种情况,即作用于一个类的数据成员的方法会破坏 union 中另一个类的数据成员。
也许您想要的是一个struct
。
关于c++ - union 可以包含具有用户定义构造函数的类的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027894/