【发布时间】:2023-03-27 21:21:02
【问题描述】:
实际上,我正在编写自己的所有库类版本,并且我不想将 STL 文件包含到我的类文件中。 因此,例如,我想检查节点是否等于 null。 如果我写类似
#define nullptr 0
那么它不适用于其他一些节点指针(即Node *root = nullptr)
【问题讨论】:
-
这是c还是c++?如果是 c++ 则 nullptr 是关键字
-
不要垃圾标签! C 不是 C++。而
nullptr是一个标准关键字,引入它是为了完全避免矛盾的0转换。 -
除非你可以添加你为什么需要这样做的动机,否则你会被否决:在语言中引入了 nullptr 以避免与零的意外混淆(通过 ADL 解析和隐式类型转换)。您提出的(定义)是危险的,并且是难以找到的错误来源。 (实际上,您在代码库中重新引入了 NULL 导致的错误,并且 nullptr 可以解决)。