c++ optional用法

c++ 17有optional,可以表示有值或没有值。应该和Java的optional差不多,优雅的处理空值。测试下。

cpp 复制代码
void testOptional(void) { // 一个值可能存在,也可能不存在.可以用optional表示
    std::optional<int> opt1 = 9527;
    if (opt1.has_value()) {
        std::cout << "opt1 value: " << opt1.value() << std::endl; // 取出值
    }

    std::optional<int> opt2; // 默认为空
    if (opt2) { // 简写
        std::cout << "opt2 value: " << opt2.value() << std::endl; // 取出值
    } else {
        std::cout << "opt2 has no value" << std::endl; 
    }

    std::optional<int> opt3 = std::nullopt; // 显式设置为空
    int val = opt3.value_or(0);  //  提供默认值(如果 opt3 为空,则返回 0)
    std::cout << "opt3 val : " << val << std::endl;
}

运行:

ok.

相关推荐
ziguo11229 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
白色冰激凌10 小时前
[SECS/GEM研究] (三)SECS-I 串口上消息怎么分块和重传
c++·secs/gem
光头闪亮亮10 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
光头闪亮亮10 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
吃好睡好便好10 小时前
MATLAB中图像的读取、写入和显示
开发语言·图像处理·学习·计算机视觉·matlab
yaoxin52112311 小时前
476. Java 反射 - 调用方法
java·开发语言
_wyt00111 小时前
洛谷 P7912 [CSP-J 2021] 小熊的果篮 题解
c++·队列
猫头虎11 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作
choumin11 小时前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式
bksczm12 小时前
Linux之日志和线程池、内存池
java·开发语言