空指针常量(nullptr),空指针值和空成员指针值之间有什么区别?

问题描述 投票:1回答:1

在ISO / IEC 14882:2017(C ++ 17)中,声明了第5.13.7节“指针文字”:

5.13.7指针文字[lex.nullptr]

指针字面量:nullptr

1指针文字是关键字nullptr。 这是std :: nullptr_t类型的prvalue。 [注意:std :: nullptr_t是一种既不是指针类型也不是成员类型指针的独特类型;相反,此类型的prvalue是空指针常量,并且可以将其转换为null指针值null成员指针值。参见7.11和7.12。 —尾注]

以下,nullptr是类型std::nullptr_t的prvalue。类型为std::nullptr_t的prvalue是一个空指针常量;因此,nullptr是一个空指针常量。空指针常量(nullptr也是如此)可以转换为空指针值或空成员指针值。

我的问题是:

  • 空指针常量(为nullptr),空指针值和空成员指针值之间有什么区别?
c++ pointers null literals nullptr
1个回答
1
投票

空指针常量(nullptr),空指针值和空成员指针值之间有什么区别?

空指针常量为nullptr或值为0的整数文字。空指针常量的示例:

NULL // a macro for one of the others
0
0L
nullptr

其中,除​​非需要支持C ++ 11标准之前的版本,否则请仅使用nullptr。

空指针值是表示空值的指针类型的值。空指针值的示例:

(void*)nullptr
(int*)nullptr

Null成员指针值是代表null的成员指针类型的值。空成员指针值的示例:

(int some_class::*)nullptr
© www.soinside.com 2019 - 2024. All rights reserved.