在 C++ 的早期,当它被固定在 C 之上时,您不能使用 NULL,因为它被定义为(void*)0
. 您不能将 NULL 分配给除 之外的任何指针void*
,这使得它毫无用处。在那些日子里,人们普遍认为您使用0
(零)作为空指针。
时至今日,我继续使用零作为空指针,但我周围的人坚持使用NULL
. NULL
我个人认为将名称 ( ) 赋予现有值没有任何好处- 因为我也喜欢将指针测试为真值:
if (p && !q)
do_something();
然后使用零更有意义(如果你使用NULL
,你不能在逻辑上使用p && !q
- 你需要明确比较NULL
,除非你假设NULL
为零,在这种情况下为什么使用NULL
)。
是否有任何客观理由更喜欢零而不是 NULL(反之亦然),或者只是个人喜好?
编辑:我应该添加(并且最初是说)对于 RAII 和异常,我很少使用零/空指针,但有时你仍然需要它们。