A看到了以下代码的问题:
union
{
float dollars;
int yens;
}price;
Run Code Online (Sandbox Code Playgroud)
price是一个类型没有名称的变量.什么是这种无名类型有用?Lambda表达式?这在C和C++中都有效吗?
类型没有名称的事实对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)