我需要有几个联合实例作为类变量,那么如何在堆中创建联合实例?谢谢你
问问题
3175 次
6 回答
8
与创建任何其他对象相同:
union MyUnion
{
unsigned char charValue[5];
unsigned int intValue;
};
MyUnion *myUnion = new MyUnion;
你的工会现在在堆上。请注意,联合是其最大数据成员的大小。
于 2009-11-24T21:44:16.403 回答
2
我的 C++ 有点生疏,但是:
my_union_type *my_union = new my_union_type;
...
delete my_union;
于 2009-11-24T21:44:09.727 回答
0
使用new
运算符。
于 2009-11-24T21:41:40.813 回答
0
与结构相同 :) 您可以使用malloc()
C 方式或new
C++ 方式使用和执行它。秘密在于结构、联合和类是相关的;结构只是一个没有方法的类(通常)。如果您关心,以下评论中有更多说明。
于 2009-11-24T21:41:55.353 回答
0
我不确定你想去哪里。联合是一种用户定义的数据或类类型,在任何给定时间,它只包含其成员列表中的一个对象。所以从这里开始,如果你有一个这样定义的联合:
union DataType
{
char ch;
integer i;
float f;
double d;
};
然后,您可以将其DataType
用作类型来定义类中的成员或用作类型来定义堆栈上的变量,就像您定义的常规类型、结构或类一样。
于 2009-11-24T21:45:23.927 回答
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;
}
于 2009-11-24T21:46:47.707 回答