Поделиться через


Соединения

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

Хранилище данных союзов числовых типов

См. также

Ссылки

Классы, структуры и объединения

Ключевые слова C++

Безымянные соединения

класс (C++)

структура (C++)