如果我创建一个常量联合对象(例如下面的代码),那么就不能进行成员分配。那么在任何情况下,是否有任何使用const union对象的方法?常量联合对象的用法是什么?
union un
{
int i;
float f;
char c;
};
const union un a;
/// ! a.i = 10; error.
如果我创建一个常量联合对象(例如下面的代码),那么就不能进行成员分配。那么在任何情况下,是否有任何使用const union对象的方法?常量联合对象的用法是什么?
union un
{
int i;
float f;
char c;
};
const union un a;
/// ! a.i = 10; error.
您仍然可以初始化工会如下:
const union un a = { .i = 100 };
然后在你的代码中使用它。
在C中,也就是说。在C++中,我认为你可以写一个构造函数和类似的东西。 – Xeo 2012-08-10 08:12:59
哈哈,你在35秒内击败了我。 :-) – 2012-08-10 08:13:08
这是我不知道的。这样任何工会成员都可以初始化! – cirronimbo 2012-08-10 08:23:54
,您仍然可以在声明它分配,比如像这样:
const union un a = {0};
更新:该符号设置工会成员的第一。
这组数字是哪一个? – 2012-08-10 08:14:26
@ R.MartinhoFernandes,所有成员,为零。 – 2012-08-10 08:15:02
是的,但这只能做只分配第一个成员(或设置为零,如上所述)! – cirronimbo 2012-08-10 08:19:14
在'c'中,通过不同成员来解释工会与最近设定的不同。当然,它可能是“常量不稳定”的 - 即我们不会改变它,但其他人可能会,而且我们需要能够看到这一点。 – BoBTFish 2012-08-10 08:12:38
如果整个该死的联盟是'const',那么不应该是这样。 – Puppy 2012-08-10 08:14:08
@Xeo,当我使用gcc进行测试时,它不会在没有“联合”部分的情况下编译。 – 2012-08-10 08:14:11