Точно так же, как структуры и классы связаны между собой, связаны и объединения и классы. Объединения представляют по существу структуру, в которой все элементы хранятся в одном и том же месте. Объединения могут содержать конструкторы и деструкторы, а также функции-члены и дружественные функции. Подобно структурам, члены объединения по умолчанию имеют в качестве спецификатора доступа public. Например, следующая программа использует объединение для вывода символов, соответствующих старшему и младшему байтам короткого целого (имеющего размер в два байта как для 16-битных, так и для 32-битных сред):
	
	#include <iostream.h>
	union u_type {
	u_type(short int a); // по умолчанию публичные
	void showchars ();
	short int i;
	char ch[2];
	};
	// конструктор
	u_type::u_type(short int a)
	{
	i = a;
	}
	// показ символов, которые содержит short int.
	void u_type::showchars()
	cout << ch [ 0 ] << " ";
	cout << ch [ 1 ] << "\n";
	int main()
	u_type u(1000);
	u.showchars ();
	return 0;
	}
Важно понимать, что подобно структуре, объявление объединения определяет тип класса. Это означает, что принципы инкапсуляции сохраняют свою силу.
Имеется несколько ограничений, которые необходимо иметь в виду при использовании объединений в С++. Первое — объединение не может наследовать какие-либо другие классы. Далее объединение не может использоваться в качестве базового класса. Объединение не может иметь виртуальные функции-члены. Никакие статические переменные не могут быть членами объединения. Объединение не может иметь в качестве члена какой-либо объект, перегружающий оператор =. Наконец, никакой объект не может быть членом объединения, если этот объект имеет конструктор или деструктор.
