C++编程法则365天一天一条(344)理解std::optional的设计初衷
std::optional
是 C++17 引入的一种类型,用于表示一个可能存在或不存在的值,常作为函数的返回值。它的设计初衷主要体现在以下几个方面:
1. 安全性
std::optional
提供了一种更安全的方式来处理可能为空的值,避免了使用裸指针或特定的“空”值(如 nullptr
或特定的标记值)或者抛出异常所带来的潜在错误。使用 std::optional
可以清楚地表达一个值的存在与否,从而减少空指针解引用等问题。
看下在没有std::optional之前我们是怎么处理的。
- 使用裸指针
在许多情况下,开发者会使用裸指针来表示一个可能为空的值。这种做法容易导致空指针解引用的问题。
int* findValue(int key