繁体   English   中英

std :: nullptr_t类型的用途是什么?

[英]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::functionoperator==operator!=重载只能将nullptr_t作为参数来判断函数对象是否为空。 有关更多详细信息,您可以阅读此问题

另外,您还会给它其他什么类型的信息,而不仅仅是重新引入NULL所带来的问题? 关键是要摆脱讨厌的隐式转换,但实际上我们无法更改旧程序的行为,因此就在这里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM