В чем преимущество std::optional перед std::shared_ptr и std::unique_ptr?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 В чем преимущество std::optional перед std::shared_ptr и std::unique_ptr?

Сообщение Anonymous »

Обоснование std::optional заключается в том, что он может содержать или не содержать значение. Следовательно, это избавляет нас от необходимости строить, возможно, большой объект, если он нам не нужен.

Например, фабрика здесь не будет создавать объект, если не выполнено какое-либо условие:

Код: Выделить всё

#include 
#include 
#include 

std::optional create(bool b)
{
if(b)
return "Godzilla"; //string is constructed
else
return {}; //no construction of the string required
}
Но тогда чем это отличается от этого:

Код: Выделить всё

std::shared_ptr create(bool b)
{
if(b)
return std::make_shared("Godzilla"); //string is constructed
else
return nullptr; //no construction of the string required
}
Что мы выиграем, добавив std::optional вместо простого использования std::shared_ptr в целом?

Подробнее здесь: https://stackoverflow.com/questions/429 ... -stdunique
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»