│ то допустимо выполнить: Объект_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-х... разрядных переменных;
- при обработке интерфейсных сообщений, часто закодированных в одном байте;
- при выполнении кодирования, когда надо обрабатывать отдельные биты слова;
- и, главное, по субъективным желаниям программиста.
Однозначно, что всё перечисленное можно легко реализовать с помощью битовых операторов, но применение битовых полей улучшает читаемость и структурируемость кода, т.к. каждая битовая переменная не прячется внутри некоей обобщённой переменной, а имеет собственное имя.
В основе битовых полей лежат структуры.
В структуре битовых полей допускается использовать и "обычные" переменные ЛЮБЫХ типов. Поэтому, можно сказать, что:
┌──────────────────────────────────────────────┐
│ Битовое поле - ОБЫЧНАЯ структура, для некоторых членов которой │
│ указывается их длина в битах. │
└──────────────────────────────────────────────┘
Обращение к полям (членам) битового поля выполняется как в обычной структуре:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.