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,表示一种“空状态”。
posted @ 2024-10-10 10:41  牛马chen  阅读(27)  评论(0编辑  收藏  举报