为什么 std::cout 只有在函数返回时才能打印 nullptr 的值?

ged*_*ial 1 c++ cout nullptr

根据这个问题Unable to print the value of nullptr on screen

我无法打印 nullptr 的值,因为它的类型为 nullptr_t,并且 std::cout 没有此类重载。

但是,如果你看看这个:

int* f()
{
    return nullptr;
}

int main()
{
    std::cout << f();
}
Run Code Online (Sandbox Code Playgroud)

输出是:

00000000

在这个问题Why does std::cout output gone完全消失后 NULL is sent to it他们讨论了一个不同的问题。

我只是想理解为什么std::cout 不能打印 nullptr,但当 nullptr由函数返回时它实际上可以。

Joh*_*erg 5

这样做的原因是它nullptr可以转换为任何指针类型(“可打印”),但它本身不是指针。

看看nullptr 到底是什么?