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

Optional data members

Boost , Boost.Optional , Quick Start

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

Предположим, мы хотим реализовать оптимизациюленивой нагрузки. Это связано с тем, что мы не хотим выполнять дорогостоящую инициализацию нашегоРесурсадо тех пор, пока он (если вообще) не будет действительно использован. Мы можем сделать это таким образом:

class Widget
{
  mutable boost::optional<const Resource> resource_;
public:
  Widget() {}
  const Resource& getResource() const // not thread-safe
  {
    if (resource_ == boost::none)
        resource_.emplace("resource", "arguments");
    return *resource_;
  }
};

необязательныйпо умолчанию конструктор создает неинициализированный необязательный.РесурсКонструктор по умолчанию не предпринимается.Ресурсне обязательно должен бытьКонструкция по умолчанию. В функцииgetResourceмы сначала проверяем, инициализируется лиresource_. На этот раз мы используем не контекстное преобразование вbool, а сравнение сboost::no. Эти два способа эквивалентны. Функцияместоинициализирует необязательное место путем идеального переадресации аргументов конструкторуРесурс. Здесь не задействовано копирование или перемещение.Ресурсдаже не должен бытьMoveConstructible.

[Note] Note

Функцияemplaceдоступна только на компиляторах, поддерживающих ссылки на rvalue и вариативные шаблоны. Если ваш компилятор не поддерживает эти функции, и вам все равно нужно избегать каких-либо конструкций перемещения, используйтеIn-Place Factory.


PrevUpHomeNext

Статья Optional data members раздела Boost.Optional Quick Start может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Quick Start ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:38:03/0.0054869651794434/1