oop — c ++ классы как союзы

Я обнаружил, что союзы являются классами в C ++.

Если вы объявляете класс как объединение:

union Foo // Объявление типа объединения
{
char ch;

int func (int a);

};

Будет ли размер объединения 4 или 1 (при условии, что размер символа равен 1, а размер указателей — 4)?

0

Решение

Я обнаружил, что союзы являются классами тоже в с ++. (акцент мой)

Нет (это класс, а не классы).Мои плохие, видимо они классы

3.9.2 / 1

  • […]
  • союзы, которые являются классами, способными содержать объекты разных типов в разное время
  • […]

(больше не актуально) Союзы не могут иметь virtual функции-члены & также не может использоваться в наследстве.

На ответ:

Размер будет достаточно большим, чтобы вместить самый большой элемент данных. В этом случае, скорее всего, 1, да.

3

Другие решения

Попробуй сам:

#include <iostream>

union Foo    // Declare union type
{
char   ch;

int func(int a);
};

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

Выход:

1
2

По вопросам рекламы [email protected]