В C++ объединение (union) представляет собой специальную структуру данных, которая позволяет нескольким полям разделять одно и то же место в памяти. В отличие от структур, где каждое поле имеет своё собственное место в памяти, поля объединения используют общее место, что позволяет экономить память и интерпретировать одни данные как другие.
Особенности объединений:
-
Общее место в памяти: Все поля объединения начинаются с одного и того же адреса в памяти. При изменении одного поля другие могут измениться.
-
Размер объединения: Размер объединения равен размеру его наибольшего поля.
-
Доступ к полям: В любой момент времени можно использовать только одно поле объединения, так как они занимают одно и то же место в памяти.
-
Использование: Объединения часто используются для создания альтернативных представлений одних и тех же данных или для экономии памяти при работе с разными типами данных.
Пример объявления и использования объединения:
#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;
}