为什么我可以在不包含STL的情况下使用nullptr?

时间:2016-08-22 13:20:58

标签: c++ c++11 pointers stl nullptr

C ++ nullptr 的类型为 std :: nullptr_t

为什么像

这样的程序
int main() {
 int* ptr = nullptr;
}

仍然有用,虽然它不包含任何STL库?

1 个答案:

答案 0 :(得分:14)

在C ++ 11中,他们希望添加一个关键字来替换宏NULL(基本上定义为#define NULL 0),因为它是一个核心概念,并且因为一些恼人的错误当你被迫使用0作为空指针常量时,你会得到。

提出了许多关键字。搜索大型代码库以确保关键字未被使用,并且仍然描述了他们想要的内容(空指针常量)。

nullptr被发现足够罕见且足够令人回味。

默认情况下,nullptr的类型没有给出关键字名称,因为大多数程序都不需要这样做。您可以通过decltype(nullptr)std标题并使用std::nullptr_t获取。

相关问题