C++中匿名联合的默认活跃字段如何确定?附代码示例场景
匿名联合的活跃字段问题
你的代码如下:
struct a_struct { int number = 0; union { long l; short* sp; }; };
之后的赋值操作:
a_struct temp; temp.number = -1;
此时这个匿名联合没有活跃字段。
原因很明确:联合的活跃成员被定义为「最后被写入的成员」,而你仅对结构体的number成员做了赋值,从未对联合里的l或sp执行过任何写入操作。同时,该联合没有自定义构造函数,默认初始化也不会给其成员赋予确定的初始值,因此不存在任何活跃字段。
内容的提问来源于stack exchange,提问作者basil
相关产品推荐
相关产品推荐

