union це ключове слово, що використовується для визначення типу об'єднання (union).
Синтаксис union union-name
public-members-list; // список публічних членів private: private-members-list; // список прихованих членів } object-list;
Таке сполучення чи об'єднання полів подібне до структури struct (більш ніж до класу class), але відрізняється тим, що поля даного union поділяють одну і ту саму позицію в пам'яті, і за замовчуванням мають модифікатор видимості public, а не private. union має розмір, що відповідає розміру його найбільшого поля (або більше якщо так потребує вирівнювання, наприклад на машинах SPARC архітектури, якщо union містить double і char його розмір скоріш за все становитиме 24, бо необхідно виконати 64-бітне вирівнювання). Сполучення не можуть мати деструкторів destructor.
Який в тому сенс? Сполучення дозволяють забезпечити декілька способів представлення одного місця у пам'яті, що дозволяє ефективніше використовувати пам'ять. Більшість сценаріїв використання типу union в C++ вирішуються функціями об'єктно-орієнтованого програмування, тому зараз вони більш поширені при програмуванні мовою C. Однак, іноді зручно уникнути формальностей об'єктно-орієнтованого програмування, коли важливою є швидкодія програми або відомо наперед, що цей елемент коду не буде змінюватися.
union Data { int i; char c;