在C++17标准中引入了std::optional类模板,它是一个泛型类模板,可以用来包装一个值,表示该值可能存在,也可能不存在。
std::optional的用法如下:
- 创建一个std::optional对象并初始化:
std::optionalopt1; // 未初始化,值不存在 std::optional opt2 = 42; // 初始化为42
- 检查值是否存在:
if (opt1.has_value()) { // 值存在 } else { // 值不存在 }
- 访问值:
if (opt2.has_value()) { int value = https://www.yisu.com/ask/opt2.value(); // 获取值>
- 获取值或默认值:
int value = https://www.yisu.com/ask/opt1.value_or(0); // 如果值存在,获取值;否则返回默认值0>
- 重置optional对象的值:
opt1.reset(); // 重置值,使其不存在std::optional的使用可以避免使用指针或引用时可能存在的空指针异常,提高了代码的安全性和可读性。