Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

The semantics

Boost , Boost.Optional , Design Overview

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Объекты типа<optional<T>>предназначены для использования в местах, где объекты типа<T>могут быть неинициализированы. Поэтому, Цель<optional<T>>— формализовать дополнительное, возможно, неинициализированное состояние. С точки зрения этой роли<optional<T>>может иметь ту же оперативную семантику<T>плюс дополнительную семантику, соответствующую этому особому состоянию. Таким образом,<optional<T>>можно рассматривать каксупертипиз<T>. Конечно, мы не можем сделать это в C++, поэтому нам нужно составить желаемую семантику, используя другой механизм. Сделать это наоборот, то есть сделать<optional<T>>подтипом<T>не только концептуально неправильно, но и непрактично: не допускается вывод из неклассового типа, такого как встроенный тип.

Мы можем извлечь из цели<optional<T>>необходимую базовую семантику:

  • Строительство по умолчанию:Ввести формально неинициализированный обернутый объект.
  • Конструкция прямой стоимости с помощью копии:Ввести формально инициализированный обернутый объект, значение которого получается в виде копии какого-либо объекта.
  • Глубокое копирование конструкции:Получить новый, но эквивалентный обернутый объект.
  • Назначение прямой стоимости (при инициализации):Присвоить значение обернутому объекту.
  • Назначение прямого значения (при неинициализированном):Для инициализации обернутого объекта со значением, полученным в виде копии какого-либо объекта.
  • Назначение (при инициализации):Присвоить обернутому объекту значение другого обернутого объекта.
  • Назначение (на неинициализированный):Для инициализации обернутого объекта со значением другого обернутого объекта.
  • Глубокие реляционные операции (при поддержке типа Т):Сравнить обернутые значения объектов с учетом наличия неинициализированных состояний.
  • Доступ к стоимости:Чтобы раскрутить завернутый объект.
  • Запрос состояния инициализации:Определить, является ли объект официально инициализированным или нет.
  • Своп:Обменять завернутые предметы. (за исключением гарантий безопасности, предоставляемых<T>своп).
  • Деинициализация:Выпустить обернутый объект (если таковой имеется) и оставить обертку в неинициализированном состоянии.

Полезны дополнительные операции, такие как преобразование конструкторов и преобразование заданий, строительство и назначение на месте и безопасный доступ к стоимости через указатель на обернутый объект или нуль.


PrevUpHomeNext

Статья The semantics раздела Boost.Optional Design Overview может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Design Overview ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 21:51:09/0.0061790943145752/0