В C# при объявлении переменной можно приставить знак вопроса, после чего в дальнейшем проверять была ли переменная инициализирована или нет:
int? a; ... if (a.HasValue) { ... } |
Иногда это бывает очень полезно, например при работе с базами данных.
В C++ к сожалению такого удобства нет, но как известно – программисты C++ отличаются верностью и если язык не предоставляет какую либо возможность, они ее добавляют сами. Например в Boost данный функционал присутствует:
#include <boost/optional.hpp> ... boost::optional<int> a; std::cout << (a.is_initialized() ? "Есть значение" : "Нет значения") << std::endl; boost::optional<int> b(3); std::cout << (b ? "Есть значение" : "Нет значения") << std::endl; a = 5; std::cout << (a ? "Есть значение" : "Нет значения") << std::endl; int result = a.get() + b.get(); std::cout << result << std::endl; b.reset(); std::cout << (b ? "Есть значение" : "Нет значения") << std::endl; |
Вывод:
Нет значения
Есть значение
Есть значение
8
Нет значения |