学堂 学堂 学堂公众号手机端

在C++17标准中引入了std::optional类模板,它是一个泛型类模板,可以用来包装一个值,表示该值可能存在,也可能不存在

lewis 1年前 (2024-03-14) 阅读数 4 #技术

在C++17标准中引入了std::optional类模板,它是一个泛型类模板,可以用来包装一个值,表示该值可能存在,也可能不存在。

std::optional的用法如下:

  1. 创建一个std::optional对象并初始化:
std::optional<int>opt1;//未初始化,值不存在 std::optional<int>opt2=42;//初始化为42
  • 检查值是否存在:
  • if(opt1.has_value()){ //值存在 }else{ //值不存在 }
  • 访问值:
  • if(opt2.has_value()){ intvalue=opt2.value();//获取值 //或者 intvalue=*opt2;//通过解引用获取值 }
  • 获取值或默认值:
  • intvalue=opt1.value_or(0);//如果值存在,获取值;否则返回默认值0
  • 重置optional对象的值:
  • opt1.reset();//重置值,使其不存在

    std::optional的使用可以避免使用指针或引用时可能存在的空指针异常,提高了代码的安全性和可读性。


    版权声明

    本文仅代表作者观点,不代表博信信息网立场。

    热门