5

有人可以提一下普通联合和匿名联合(或结构)之间的区别吗?我刚刚找到一个:
函数不能在匿名联合中定义。

4

2 回答 2

7

您不需要点运算符“。” 访问匿名联合元素。

#include <iostream> 
using namespace std;
int main() {
   union {
      int d;
      char *f;
   };

   d = 4;
   cout << d << endl;

   f = "inside of union";
   cout << f << endl;
}

在这种情况下,这将成功编译,但对于正常的 Union,则为“NO”。

此外,匿名工会只能有公共成员。

PS:简单地省略语法的类名部分不会使联合成为匿名联合。对于有资格作为匿名联合的联合,声明不能声明对象。

于 2013-06-15T12:12:27.870 回答
0

据我所知,标准 C++ 中不存在匿名结构,尽管某些编译器可能支持它们。

匿名工会不能有受保护或私人成员。成员在不使用联合名称的情况下访问(显然,因为它没有一个!)。全局匿名工会(上帝保佑)必须声明为静态的。

于 2013-06-15T12:02:19.020 回答