C++中同类型的联合

Sam*_*rsa 6 c++ unions

每当我看到联合的例子时,它们总是不同的类型.例如,来自MSDN:

// declaring_a_union.cpp
union DATATYPE    // Declare union type
{
    char   ch;
    int    i;
    long   l;
    float  f;
    double d;
} var1;          // Optional declaration of union variable

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个联合(在这种情况下是匿名的,但这不重要)会发生什么,如下所示:

union
{
    float m_1stVar;
    float m_1stVarAlternateName;
};
Run Code Online (Sandbox Code Playgroud)

无论这是否是好的做法,这会导致任何问题吗?

Mar*_*som 10

不,这不会导致任何问题.你没有经常看到它的原因是它没有意义 - 两个名称都指的是相同类型的相同值.

  • 是的,但有时您可能不知道类型是否相同(例如,如果其中一个是模板参数). (8认同)
  • @leftaroundabout,我没有考虑过的好点。谢谢。 (2认同)
  • 对不起来这个,但这可以备份吗?是在某处定义的吗?显然它应该有效,但它是否已经_保证_? (2认同)