Я обнаружил, что союзы являются классами в C ++.
Если вы объявляете класс как объединение:
union Foo // Объявление типа объединения { char ch; int func (int a); };
Будет ли размер объединения 4 или 1 (при условии, что размер символа равен 1, а размер указателей — 4)?
Я обнаружил, что союзы являются классами тоже в с ++. (акцент мой)
Нет (это класс, а не классы).Мои плохие, видимо они классы
- […]
- союзы, которые являются классами, способными содержать объекты разных типов в разное время
- […]
(больше не актуально) Союзы не могут иметь virtual
функции-члены & также не может использоваться в наследстве.
На ответ:
Размер будет достаточно большим, чтобы вместить самый большой элемент данных. В этом случае, скорее всего, 1
, да.
Попробуй сам:
#include <iostream>
union Foo // Declare union type
{
char ch;
int func(int a);
};
int main()
{
std::cout << sizeof(Foo);
}
Выход:
1