为什么我可以使用nullptr不包括STL

Why can I use nullptr without including STL?

本文关键字:不包括 STL nullptr 我可以 可以使 为什么      更新时间:2023-10-16

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

为什么像

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

仍然工作,虽然它不包括任何STL库?

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

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

nullptr被发现是足够罕见和令人回味的。

默认情况下,nullptr的类型没有给定关键字名称,因为大多数程序都不需要。您可以通过decltype(nullptr)或包含std头并使用std::nullptr_t获得它。