匿名联合类型的用例是什么?

Phi*_*yck 3 c c++

A看到了以下代码的问题:

union
{
     float dollars;
     int yens;
}price;
Run Code Online (Sandbox Code Playgroud)

price是一个类型没有名称的变量.什么是这种无名类型有用?Lambda表达式?这在C和C++中都有效吗?

Rei*_*ica 5

类型没有名称的事实对price变量的使用几乎没有影响.这意味着你不能(轻松地)创建这种类型的另一个对象.

如果price函数内部是局部变量,则此构造最有意义.如果您只想要一个这种类型的对象,则不需要为该类型命名,所以为什么要这么麻烦.它完全没有区别:

union SomeNameIPromiseNotToUseAnywhereAndWhichDoesntConflictWithAnything
{
  float dollars;
  int yens;
} price;
Run Code Online (Sandbox Code Playgroud)

请注意,在C++ 11及更高版本中,您实际上可以创建另一个对象:

decltype(price) anotherPrice;
Run Code Online (Sandbox Code Playgroud)