繁体   English   中英

nullptr有哪些不同的类型?

[英]What are the different nullptr types?

我在读这个问题:

在C ++ 11中,dynamic_cast是否返回nullptr或0?

我了解到dynamic_cast的结果可以是该特定类型的null值:

考虑一个变量char * ptr。 它的类型是(毫无疑问)char *。 但是nullptr的类型是特殊类型的nullptr_t。 因此,当我们编写类似ptr = nullptr的内容时,必须发生一些技术问题

nullptr必须隐式转换为char *。 转换的结果设置为ptr的新值。 char *的空值是将nullptr转换为char *的结果。 从概念上讲,它仍然是nullptr,但是具有不同的类型(char *)。 此null值不同于int *或string *或任何其他指针类型的null值。 我们倾向于将这些null值视为nullptr(或0),但每个值实际上都是与不同类型不同的值。 (顺便说一下,使用==进行比较时会发生相同的转换)。

那么什么是空指针类型呢? 真的有关系吗 ? 在任何检查(我们要确定某项是否为空)中仅检查==到std :: nullptr是否足够?

没有不同的nullptr类型。 nullptrstd::nullptr_t类型的值。 有不同的指针类型,并且任何指针类型都可以具有null值,与nullptr相比,其结果为true 指针类型的数量是无限的。 由于您可以形成指向任何类型的指针,因此结果本身就是可以形成指向的类型的指针。 (即,您可以拥有int*************************

在任何检查(我们要确定某项是否为空)中仅检查==到std :: nullptr是否足够?

不是std::nullptr ,只是nullptr 但是否则,是的。

那么什么是空指针类型呢?

只有一种空指针类型, nullptr_t

真的有关系吗?

因为只有一种类型的空指针,所以这个问题没有意义。

在任何检查(我们要确定某项是否为空)中仅检查==到std::nullptr是否足够?

没有什么像std::nullptr nullptr是一个关键字。 它是std::nullptr_t类型的prvalue

是的,任何指针都可以与nullptr进行比较。

有一个类型std::nullptr_t 它不是指针类型。 尽管如此,我们nullptr这种类型的实例(例如nullptr )称为“空指针常量”。

对于每种类型TT*是一个不同的指针类型,并且存在这种类型的空指针。

nullptr_t到任何指针类型都有适当的转换,允许我们在需要空指针常量时使用nullptr 例如

int *ptr = nullptr; // initialize to be the null pointer of type int*

暂无
暂无

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

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