我需要将union的几个实例作为类变量,所以我如何在堆中创建一个union实例?谢谢
答案 0 :(得分:8)
与创建任何其他对象相同:
union MyUnion
{
unsigned char charValue[5];
unsigned int intValue;
};
MyUnion *myUnion = new MyUnion;
你们的工会现在已经堆积如山了。请注意,union是其最大数据成员的大小。
答案 1 :(得分:2)
我的C ++有点生疏,但是:
my_union_type *my_union = new my_union_type;
...
delete my_union;
答案 2 :(得分:0)
使用new
运算符。
答案 3 :(得分:0)
与struct :)相同您可以使用malloc()
并以C方式执行,或以{+ 1}}使用C ++方式。秘密是结构,工会和阶级是相关的; struct只是一个没有方法的类(通常)。如果您愿意,可以在以下评论中进一步澄清。
答案 4 :(得分:0)
我不确定你想把它放在哪里。 union是用户定义的数据或类类型,在任何给定时间,它只包含其成员列表中的一个对象。所以从这开始,如果你有一个像这样定义的联合:
union DataType
{
char ch;
integer i;
float f;
double d;
};
然后,您可以使用DataType
作为类型来定义类中的成员或作为类型来定义堆栈上的变量,就像您定义的常规类型,结构或类一样。
答案 5 :(得分:0)
使用new
运算符:
#include <iostream>
union u {
int a;
char b;
float c;
};
class c {
public:
c() { u1 = new u; u2 = new u; u3 = new u; }
~c() { delete u1; delete u2; delete u3; }
u *u1;
u *u2;
u *u3;
};
int main()
{
c *p = new c;
p->u1->a = 1;
p->u2->b = '0' + 2;
p->u3->c = 3.3;
std::cout << p->u1->a << '\n'
<< p->u2->b << '\n'
<< p->u3->c << std::endl;
delete c;
return 0;
}