Типы данных в языке C++__________________________________717

Предупреждение ———————————————————————————————————

Не всегда объединение может быть легко перенесено на другие компьютерные платформы.
Перенесется ли объединение, или нет, часто зависит от соглашений о выравнивании в памя-
ти типов данных элементов объединения. Так что использование объединений снижает мо-
бильность вашей программы.

Объединения объявляются при помощи ключевого слова union в таком же
формате, как структуры и классы (см. разделы 12.11.1 и 12.13). Например:

union Tunion {

int    i;

double d;

char * s;

1;

Это объявление создает тип объединения с именем Tunion, которое хранит в
одной и той же области памяти или целое значение i, или действительное значение
d, или указатель на строку s.

Само по себе объявление объединения создает новый тип, но не объект. В даль-
нейшем для использования объединения надо объявить переменную этого типа,
например:

Tunion N;

К элементам переменной типа объединения можно обращаться так же, как к
элементам структуры или класса. Например, вы можете записать операторы:

N. i = 5;

N.d = 5.1;

char *S = "объединение";

N . s = S ;

Но учтите, что при использовании объединения вам надо все время знать, ка-
кое значение вы занесли в эту переменную последней операцией присваивания.
Если, например, вы выполнили первый из приведенных выше операторов, а затем
обратились к элементу d, то вы получите бессмысленное знчение. А если вы по
ошибке обратились в этом случае к элементу s, то вас ждут крупные неприятности,
поскольку неизвестно, на что будет указывать s.

Предупреждение •••' ''~" •""——————————————————————————————

Использование объединений позволяет экономить ресурсы, но существенно усложняет про-
граммирование и затрудняет отладку. Так что решайте, что вам важнее, и не увлекайтесь из-
лишне объединениями.

12.13 Классы

12.13.1 Объявление класса

Класс — это тип данных, определяемый пользователем. То, что в C+-l-Builder
имеется множество предопределенных классов не противоречит этому определе-
нию — ведь разработчики C+4-Builder тоже пользователи C++. Понятия класса,
структуры (см. раздел 12.11) и объединения (см. раздел 12.12) в C++ довольно
близки друг к другу. Поэтому почти все, что будет далее говорится о классах, при-
менимо также к структурам и объединениям.