В C++ объединение (union) представляет собой специальную структуру данных, которая позволяет нескольким полям разделять одно и то же место в памяти. В отличие от структур, где каждое поле имеет своё собственное место в памяти, поля объединения используют общее место, что позволяет экономить память и интерпретировать одни данные как другие.

Особенности объединений:

  1. Общее место в памяти: Все поля объединения начинаются с одного и того же адреса в памяти. При изменении одного поля другие могут измениться.

  2. Размер объединения: Размер объединения равен размеру его наибольшего поля.

  3. Доступ к полям: В любой момент времени можно использовать только одно поле объединения, так как они занимают одно и то же место в памяти.

  4. Использование: Объединения часто используются для создания альтернативных представлений одних и тех же данных или для экономии памяти при работе с разными типами данных.

Пример объявления и использования объединения:

#include <iostream>
using namespace std;
 
union Data {
    int i;
    float f;
    char str[20];
};
 
int main() {
    Data data;
 
    data.i = 10; // запись целого числа
    cout << "Integer i: " << data.i << endl;
 
    data.f = 3.14; // запись числа с плавающей точкой
    cout << "Float f: " << data.f << endl;
 
    strcpy(data.str, "Hello"); // запись строки
    cout << "String str: " << data.str << endl;
 
    cout << "Size of Data: " << sizeof(Data) << " bytes" << endl;
 
    return 0;
}