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.

相关推荐
小巧的砖头1 小时前
C#会重蹈覆辙吗?系列之2:反射及元数据的性能问题
开发语言·前端·c#
凯瑟琳.奥古斯特1 小时前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
2601_963645921 小时前
【2026最新】MATLAB教程(附安装包,非常详细)
开发语言·matlab·信息可视化
闲猫3 小时前
Python 虚拟环境 virtualenv & uvicorn 服务搭建 & FAstAPI 使用
开发语言·python
三月不知肉味y3 小时前
2026-07-05-JAVA面试场景题训练
java·开发语言·面试
豆瓣鸡3 小时前
封装 API 请求日志切面——从注解定义到 Starter 自动装配
java·开发语言·spring boot
༄沐࿆风࿆࿆5 小时前
JavaScript函数完全指南:从基础语法到闭包原理与应用实战
开发语言·javascript
KobeSacre5 小时前
DelayQueue 源码
java·开发语言
Let's Chat Coding5 小时前
身份识别、身份认证与授权的区别
c++