我知道在C++中,在基于指针的应用程序中,0x
或NULL
已经被nullptr
所取代。我只是好奇他们为什么要做这个替代品?
在什么情况下,在处理指针时,使用nullptr
而不是NULL
是有益的?
发布于 2013-12-11 03:09:44
nullptr
的类型为std::nullptr_t
。它可以隐式转换为任何指针类型。因此,它将在重载解析中匹配std::nullptr_t
或指针类型,但不匹配其他类型,如int
。
0
(又称C的NULL桥接到C++中)可能会导致重载函数解析中的歧义,以及其他问题:
f(int);
f(foo *);
(感谢Caleth在评论中指出了这一点。)
发布于 2013-12-11 03:06:48
一个原因是:文字类型的0
不太倾向于获取int
类型,例如,在完美参数转发中,或者更一般的情况下,作为模板化类型的参数。
另一个原因:代码的可读性和清晰度。
https://stackoverflow.com/questions/20509734
复制相似问题