Hin*_*dol 19 c++ nullptr c++11
我了解到nullptr,除了可转换为任何指针类型(但不是任何整数类型)之外,还有自己的类型std::nullptr_t.因此可以接受一个方法重载std::nullptr_t.
究竟为什么需要这样的过载?
tor*_*ons 24
如果多个重载接受指针类型,std::nullptr_t则接受nullptr参数需要重载.如果没有std::nullptr_t重载,传递时应该选择哪个指针重载是不明确的nullptr.
例:
void f(int *intp)
{
// Passed an int pointer
}
void f(char *charp)
{
// Passed a char pointer
}
void f(std::nullptr_t nullp)
{
// Passed a null pointer
}
Run Code Online (Sandbox Code Playgroud)
在某些特殊情况下,与nullptr_t类型进行比较有助于指示对象是否有效。
例如,operator==和operator!=的重载std::function只能nullptr_t作为参数来判断函数对象是否为空。有关更多详细信息,您可以阅读这个问题。