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

Rob*_*nig 10 c++ pointers stl nullptr c++11

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

为什么一个程序喜欢

int main() {
 int* ptr = nullptr;
}
Run Code Online (Sandbox Code Playgroud)

仍然有效,虽然它不包括任何STL库?

Yak*_*ont 16

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

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

nullptr 被发现足够稀有和令人回味.

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