构造对象后,我将NumericType Values (10, 3.1416, 20)
的值设为20, 3.1416, 20
。定义了union
中的构造函数的行为?
union NumericType
{
NumericType() {}
NumericType(int i, double d, long l)
{
iValue = i;
dValue = d;
lValue = l;
}
private:
long lValue;
int iValue;
double dValue;
};
int main()
{
union NumericType Values ( 10, 3.1416, 20 );
}
最佳答案
你在做什么毫无意义。因为这是一个联合,所以您将分配给同一内存区域3次。因为您最后在构造函数中分配了lvalue
,所以这就是所有内容。所有这三个变量都在同一位置并占用相同的内存(dValue
除外,该字节比其他两个多占用4个字节)。
您可能需要struct
,而不是union
(因为在struct
中,所有变量都是独立的,将一个变量设置为某些变量不会影响其他变量)。
Here's a good visualization(请注意,此块只是一个8字节的内存块,而不是3):
(来源:microsoft.com)