在C++早期,它是建立在C的基础之上的。你不能使用NULL,因为它被定义为(void*)0
。你不能将NULL赋值给除void*
外的任何指针,这使其变得有点无用。在那个时代,人们普遍使用0
(零)表示空指针。
直到今天,我仍然使用零作为空指针,但我周围的人坚持使用NULL
。我个人认为给一个已经存在的值(NULL
)起一个名称没有任何好处,而且因为我也想将指针测试为真值:
if (p && !q)
do_something();
在这种情况下,使用零更有意义(例如如果您使用NULL
,则不能逻辑上使用p&& !q
- 您需要明确与NULL
进行比较,除非您假设NULL
为零,在这种情况下为什么使用NULL
)。
是否有任何客观理由更喜欢零而不是NULL(或反之亦然),还是所有都只是个人喜好?
编辑:我应该补充说明(并最初打算说)使用RAII和异常后,我很少使用零/NULL指针,但有时您仍然需要它们。