nullopt&&nullptr
std::nullopt
是 C++17 中引入的一个特殊值,用来表示 std::optional
类型中的“无值”状态。它用于显式地表示某个 std::optional
对象不包含有效值,而不是用默认构造函数或其他不明确的方式表示。
std::nullopt
的使用
std::nullopt
是一个常量,可以直接赋值给 std::optional
类型的变量,表示该变量处于“无值”状态。下面是一个简单的例子:
#include <iostream>
#include <optional>
std::optional<int> getNumber(bool provideValue) {
if (provideValue) {
return 42; // 返回一个有值的 optional
} else {
return std::nullopt; // 返回一个无值的 optional
}
}
int main() {
auto result = getNumber(true);
if (result) {
std::cout << "Value: " << *result << std::endl;
} else {
std::cout << "No value." << std::endl;
}
result = getNumber(false);
if (result) {
std::cout << "Value: " << *result << std::endl;
} else {
std::cout << "No value." << std::endl;
}
return 0;
}
nullptr
nullptr
是 C++11 引入的,表示空指针。它取代了早期使用的NULL
,更具类型安全性。- 用法:
int* p = nullptr; // 空指针
小结
std::nullopt
是专门用于std::optional
的,表示“无值”状态。nullptr
用于表示空指针。std::monostate
用于std::variant
,表示一种“空状态”。