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