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.