根据这个问题Unable to print the value of nullptr on screen
我无法打印nullptr的值,因为它的类型为nullptr_t,而std :: cout没有这样的重载。
但是,如果你看一下:
int* f()
{
return nullptr;
}
int main()
{
std::cout << f();
}
输出结果为:
00000000
在这个问题Why does std::cout output disappear completely after NULL is sent to it中,他们讨论了一个不同的问题。
我只是想了解为什么 std :: cout无法打印nullptr,但实际上当nullptr由函数返回返回时。
答案 0 :(得分:3)
原因是nullptr
可转换到任何指针类型(“可打印”),但它本身不是指针。
答案 1 :(得分:2)
以下是来自CPP标准[4.10]
的nullptr的含义CPP标准规定的一点是,它不是std :: nullptr_t值,它的计算结果为零或std :: nullptr_t 类型的prvalue。
在你的情况下,它几乎是某种程度上的(TYPE)指针,因此当你尝试将其粘贴时,它会粘贴它的类型值(它指向的位置,但它本身不会)。你的函数返回一个int *,你给它一个nullptr。所以你基本上做的是给一个int *一个值。 nullptr本身不会有值,但
int* abc = nullptr;
意愿。