0

我发现联合是 C++ 中的类。

如果您将一个类声明为联合:

union Foo // 声明联合类型
{
    字符 ch;

    int func(int a);

};          

联合的大小是 4 还是 1(假设 char 大小为 1 ,指针大小为 4 )?

4

2 回答 2

3

我发现联合也是C++ 中的类。(强调我的)

不(它们是类类型,而不是类)。我的错,显然它们是类:

3.9.2/1

  • [...]
  • 联合,它们是能够在不同时间包含不同类型对象的类
  • [...]

(不再相关)联合不能有virtual成员函数,也不能用于继承。

上答案:

大小将足以容纳最大的数据成员。在这种情况下,很可能是1,是的。

于 2012-09-07T12:00:59.910 回答
2

自己试试:

#include <iostream>

union Foo    // Declare union type
{
    char   ch;

    int func(int a);     
};   

int main()
{
    std::cout << sizeof(Foo);
}

输出:

1
于 2012-09-07T12:01:04.277 回答