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 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
RuoZoe2 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
事圆则缓3 小时前
Kotlin 协程完全指南
开发语言·kotlin
鱼子星_3 小时前
【C++】继承和多态(上)
c++·笔记
我爱写代码i4 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路4 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
统计学小王子5 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研5 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴5 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
码匠许师傅5 小时前
【设计模式精讲】22.中介者模式(Mediator)
c++·设计模式·软件工程·uml·中介者模式