8.5.13 Объединения

We use cookies. Read the Privacy and Cookie Policy

8.5.13 Объединения

Объединение можно считать структурой, все объекты члены которой начинаются со смещения 0, и размер которой достаточен для содержания любого из ее объектов членов. В каждый момент времени в объединеии может храниться не больше одного из обектов членов. Объединение может иметь функции члены (включая конструкторы и деструкторы). Из объединения невозможно вывети класс. Объект класса с конструктором или деструктором не может быть членом объединения.

Объединение вида

union (* список_членов *);

называется безымянным объединением; оно определяет неменованный объект. Имена членов безымянного объединения долны отличаться от других имен в области видимости, в которой объединение описано; в этой области видимости они могут ипользоваться непосредственно, без обычного синтаксиса доступа к членам (#8.5). Например:

union (* int a; char* p; *); a = 1; // ... p = «asdf»;

Здесь a и p используются как простые переменные (не-члны), но так как они являются членами объединения, они имеют один и тот же адрес.