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.

相关推荐
Escalating_xu1 小时前
【C 语言】深入理解指针(2):数组名、数组传参、二级指针与指针数组
java·c语言·开发语言
郝学胜-神的一滴1 小时前
游戏引擎原理与实践 01:聊聊游戏引擎的前世今生
开发语言·c++·游戏引擎·产品运营·软件工程·产品经理·untiy
bkspiderx2 小时前
Qt 的消息机制:事件驱动与信号槽的底层逻辑
开发语言·qt·信号槽·事件驱动·qt 的消息机制
晴天的雨.9922 小时前
【C++算法】三数之和
开发语言·c++·算法
pippocao2 小时前
王者荣耀日志组件BqLog 为何如此快之3——压缩日志执行路径优化
c++
AC赳赳老秦2 小时前
公开 CSV 数据集批量处理实战:用 OpenClaw 高效完成下载、清洗与标准化分析样本生成
java·开发语言·汇编·c++·python·deepseek·openclaw
j7~3 小时前
【Python】(篇七)《使用Python库》 -- 详解
开发语言·后端·python·编程学习·python标准库·python第三方库·python拓展
心中有你02143 小时前
C语言实现文件异或加密与RLE压缩算法
c语言·开发语言
凉茶钱3 小时前
【吃透C++】static、友元、内部类、匿名对象与拷贝编译器优化全解析
c++·青少年编程·visual studio
小宋10213 小时前
MCP 工具也有供应链风险:注册中心、签名校验、版本锁定与白名单
开发语言·网络·人工智能·php