更多C++学习笔记,关注 wx公众号:cpp读书笔记
Item 8: Prefer nullptr
to 0
and NULL
你看这样对不对:字面值0
是一个int
不是指针。如果C++发现在当前上下文只能使用指针,它会很不情愿的把0
解释为指针,但是那是最后的退路。一般来说C++的解析策略是把0
看做int
而不是指针。
实际上,NULL
也是这样的。但在NULL
的实现细节有些不确定因素,因为实现被允许给NULL
一个除了int
之外的整型类型(比如long
)。这不常见,但也算不上问题所在。这里的问题不是NULL
没有一个确定的类型,而是0
和NULL
都不是指针类型。
在C++98中,对指针类型和整型进行重载意味着可能导致奇怪的事情。如果给下面的重载函数传递0
或NULL
,它们绝不会调用指针版本的重载函数: