Типы данных. Знакомствоу с простейшими видами пользовательских типов данных. Объединение разнотипных данных под одним именем, страница 6

│  то допустимо выполнить:         Объект_1 = Объект_2; 

└──────────────────────────────────────────────┘

, где

Ярлык  - Имя ранее определённой структуры,

Объект_1, Объект_2  - объекты типа Ярлык.

Присваивание можно выполнять независимо от размеров и внутреннего содержания структуры: содержит ли она массивы, имеет ли вложенные структуры.

Единственное требование (на будущее):

┌──────────────────────────────────────────────┐

│  Структура не должна содержать динамической памяти.  │

└──────────────────────────────────────────────┘

Присваивание абсолютно одинаковых по содержанию, но разнотипных объектов, недопустимо.

Cannot convert 'bbb' to 'ddd' - Не могу преобразовать 'bbb' к 'ddd'.

Подобное сообщение выдаётся при попытке присваивания любых разнотипных объектов, если не предприняты специальные меры, типа перегрузки операторов (это будет рассмотрено сильно потом).

┌──────────────────────────────────────────────┐

│  Присваивание недопустимо для объектов разных типов.  │

└──────────────────────────────────────────────┘

Это вам здесь не там !

*                   *                     *

┌─────────────────────────────────┐  t0000132

│  Инициализация полей структуры  │

└─────────────────────────────────┘

При объявлении объекта в С++ допускается выполнение его инициализация.

Для этого при объявлении объекта следует выполнить присваивание, в правой части которого в фигурных скобках указать инициализирующие значения.

Например,

ddd ob = { 1, 2, 3};

где      ddd    -    имя структуры (тип пользовательских данных);

ob    -    имя объекта;

{ ... } -    инициализирующие значения.

Инициализация структур с вложенными объектами выполняется аналогично, но в общих фигурных скобках располагаются внутренние {}, в которых указываются значения инициализации для вложенных объектов.

Например, ссс ob = {1, 2, {3, 4}, 5, 6, {7, 8} 9, 0 }

─┬──        ──┬─

├───────┤

│Для внутренних объектов.

Инициализация объектов несколько напоминает инициализацию массивов.

Фигурные скобки внутри внешних, правда, не являются обязательным атрибутом инициализации. Без них работает так же.

┌──────────────────────────────────────────────┐

│Внутренние фигурные скобки ставятся только для повышения наглядности.  └──────────────────────────────────────────────┘

Инициализировать члены объекта можно не только константами, но и переменными, значения которых рассчитываются непосредственно при работе кода.

┌──────────────────────────────────────────────┐

Инициализировать объект можно не только константами, но и переменными 

└──────────────────────────────────────────────┘

Инициализация членов объекта позволяет повысить читаемость кода и сократить его размеры, особенно, если объект создаётся неоднократно, например, при входе в некую область видимости, или создаётся в функции.

В общем - где бы никак, всё лучше, чем когда!

*                   *                    *

┌────────────────┐                         t0000133

│  Битовые поля  │

└────────────────┘

Битовые поля применяются, если наличествует необходимость работы с отдельными битами.

Применение битовых полей может быть вызвано следующими причинами:

- в целях экономии памяти, т.к. в одном байте можно хранить значения нескольких малюсеньких переменных, например, некое подобие булевых, или 2-х, 3-х... разрядных переменных;

- при обработке интерфейсных сообщений, часто закодированных в одном байте;

- при выполнении кодирования, когда надо обрабатывать отдельные биты слова;

- и, главное, по субъективным желаниям программиста.

Однозначно, что всё перечисленное можно легко реализовать с помощью битовых операторов, но применение битовых полей улучшает читаемость и структурируемость кода, т.к. каждая битовая переменная не прячется внутри некоей обобщённой переменной, а имеет собственное имя.

В основе битовых полей лежат структуры.

В структуре битовых полей допускается использовать и "обычные" переменные ЛЮБЫХ типов. Поэтому, можно сказать, что:

┌──────────────────────────────────────────────┐

│  Битовое поле - ОБЫЧНАЯ структура, для некоторых членов которой  │

│                 указывается их длина в битах.                    │

└──────────────────────────────────────────────┘

Обращение к полям (членам) битового поля выполняется как в обычной структуре: