【发布时间】:2016-05-17 07:09:15
【问题描述】:
我目前正在阅读一本关于 C++ 的书,在这本书中作者解释说最好使用常量而不是 NULL 宏,但没有真正解释原因或给出任何优点或缺点。
那么为什么最好使用:
const int NULL = 0;
int *ptr = NULL;
代替:
int *ptr = NULL;
给出的唯一解释是NULL 宏不是类型安全的。
【问题讨论】:
-
使用 nullptr ,根据现代 c++
-
The
NULLmacro 首先必须是一个宏。其次,它必须是评估为零的常量右值,是实际的零或其他特定于平台的值,当转换为指针时为空指针,或者是nullptr_tprvalue(如nullptr)。该宏通常定义为0或nullptr(取决于编译器使用的C++ 规范)。使用变量没有意义,vill也会导致转换问题。 -
那些告诉你该怎么做而不说为什么的书是相当没用的。
-
而这本书真的告诉你要定义一个名为NULL的整数常量吗?如果是这样,请不要再使用它。
-
@simon 从来没有也永远不会是一个好的建议。
标签: c++ null-pointer