[英]What are the uses of the type `std::nullptr_t`?
我了解到nullptr
除了可以转换为任何指针类型(但不能转换为任何整数类型)之外,还具有自己的类型std::nullptr_t
。 因此,可能会有一个方法重载接受std::nullptr_t
。
究竟为什么需要这种过载?
如果不止一个重载接受了指针类型,则必须接受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
}
在某些特殊情况下,与nullptr_t
类型进行比较有助于指示对象是否有效。
例如, std::function
的operator==
和operator!=
重载只能将nullptr_t
作为参数来判断函数对象是否为空。 有关更多详细信息,您可以阅读此问题 。
另外,您还会给它其他什么类型的信息,而不仅仅是重新引入NULL
所带来的问题? 关键是要摆脱讨厌的隐式转换,但实际上我们无法更改旧程序的行为,因此就在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.