nullptr或nullptr

Rae*_*ald 15 c++ null language-lawyer

如果我说的nullptr,是正确的术语 nullptr(只有一个,并且所有提及是同一事物的引用),或一个 nullptr(有几个相同的东西).

也就是说,应该是功能文档说

如果是ptrnullptr,则该函数使用内部缓冲区...

要么

如果ptr是a nullptr,则该函数使用内部缓冲区...

(讽刺的是,这不是一个基于意见的问题,因为它可以通过参考究竟 nullptr是什么来回答)

小智 24

标准本身可以互换使用三种形式,但它们都不是"是nullptr"或"是nullptr".如果您使用这三者中的任何一个,那么您就是一个很好的公司.

一片空白

int_type underflow();
Run Code Online (Sandbox Code Playgroud)

7 备注:公共成员basic_streambuf只有在gptr()为null或时才调用此虚函数gptr() >= egptr()

是一个空指针

int sync();
Run Code Online (Sandbox Code Playgroud)

38 效果: [...]构造一个岗位对象后,如果rdbuf()是空指针,则返回-1.[...]

nullptr

void lock();
Run Code Online (Sandbox Code Playgroud)

3 抛出: [...] system_error用的一个错误条件operation_not_permitted,如果pmnullptr.[...]

  • FWIW,我认为第三种情况,"如果`pm`是`nullptr`",则是编辑错误.`pm`是指针类型的(仅限展示)左值表达式,`nullptr`是非指针类型的prvalue表达式,所以我不会说技术上`pm`*可以*"是"`nullptr` .我会使用第一个或第二个短语. (2认同)

Rei*_*ica 15

nullptr是一个指定类型的prvalue的关键字std::nullptr_t.超正式地,指针因此不能是[a |] nullptr.但是,它可以"为空"(或"具有空值").

在您的文档示例中,我只想说

如果ptr为null,则函数为...

注意std::nullptr_t(因此nullptr)甚至不是指针类型!它是一种特殊类型,可以转换为任何指向对象的指针,指向函数的指针或指向成员的指针.我认为这不是谈论指针存在的额外理由nullptr; 指针只是null.

  • 而`nullptr`是_空指针literal_. (3认同)