Соединения
A union данные, определенные пользователем, или тип класса, в любой момент времени содержат только один объект из списка членов (хотя этот объект может быть массивом или типом класса).
union [tag] { member-list } [declarators];
[union] tag declarators;
Параметры
tag
Имя типа, заданного для подключения.member-list
Список типов данных соединения.См. примечания.declarators
Списке декларатора указав имена соединения.Дополнительные сведения см. в разделе Общие сведения о деклараторов.
Заметки
member-list connection представляет собой соединение может содержать типы данных.Соединение требует достаточно хранилище содержит наибольший элемента в своем member-list.Дополнительные сведения см. в разделе Объявления соединения (справочник по языку c).
Объявление соединения
Начните объявление соединения с ключевым словом соединения и заключить список элементов в фигурные скобки:
// declaring_a_union.cpp
union DATATYPE // Declare union type
{
char ch;
int i;
long l;
float f;
double d;
} var1; // Optional declaration of union variable
int main()
{
}
Использование соединений
Объединение C++ ограниченная форма типа класса.Оно может включать описатели доступа (открытый, защищенный, закрытой) данные элемента и функции-члены, включая конструкторы и деструкторы.Оно не может содержать виртуальные функции или статические члены данных.Его нельзя использовать как базовый класс, и оно может содержать базовые классы.По умолчанию доступ членов в соединении открытым.
Тип соединения c может содержать только элементы данных.
В c# следует использовать union ключевое слово для объявления переменной соединения.В C++ union ключевое слово необязательно.
union DATATYPE var2; // C declaration of a union variable
DATATYPE var3; // C++ declaration of a union variable
Переменная типа соединения может содержать одно значение любого типа, объявленного в соединении.Используйте оператор (участник-выделения.) доступа к члену соединения:
var1.i = 6; // Use variable as integer
var2.d = 5.327; // Use variable as double
Можно объявить и инициализировать соединение в той же выписке путем присвоения выражение, заключенное в фигурные скобки.Выражение вычисляется и присвоить первому полю соединения.
Пример
// using_a_union.cpp
#include <stdio.h>
union NumericType
{
int iValue;
long lValue;
double dValue;
};
int main()
{
union NumericType Values = { 10 }; // iValue = 10
printf_s("%d\n", Values.iValue);
Values.dValue = 3.1416;
printf_s("%f\n", Values.dValue);
}
Output
10
3.141600
NumericType объединение располагаются в памяти (концептуально), как показано на следующем рисунке.
хранение данных в соединении NumericType