阅读一些代码我发现一个类只接受新的C++ 11 nullptr_t作为参数.该课程如下所示.
我是否纠正了我唯一可以通过专门使用构造对象的东西nullptr?
class CA {
public:
CA(nullptr_t) {}
};
Run Code Online (Sandbox Code Playgroud)
该标准在§2.14.7.1中规定:
指针文字是关键字
nullptr.它是一种类型的prvaluestd::nullptr_t.[注意:std::nullptr_t是一种不同的类型,既不是指针类型也不是指向成员类型的指针; 相反,这种类型的prvalue是一个空指针常量,可以转换为空指针值或null成员指针值.-endnote]
类型的唯一prvalue nullptr_t是nullptr其然后转化为以下中§4.10和§4.11指定的规则的其他指针类型.
其他整数文字可以std::nullptr_t按照§4.10.1 转换为类型的值:
空指针常量是一个整数文字(2.14.2),其值为零或prvalue类型
std::nullptr_t.
因此,您可以使用值为零或的值为interger的文本nullptr.
特别:
00u, 0U0l, 0L0ul,0uL,0Ul,0UL0ll, 0LL0ull,0uLL,0ULLnullptrNULL我可能会遗漏一些案件,所以可以随意纠正我.
\n\n\n我是否正确地认为,我唯一可以通过专门使用 nullptr 来构造对象?
\n
不。这在 \xc2\xa74.10 [conv.ptr] 中有介绍:
\n\n\n\n\n整型的空指针常量可以转换为类型的纯右值
\nstd::nullptr_t。
其中空指针常量定义如下:
\n\n\n\n\n空指针常量是一个整数文字 (2.14.2),其值为 0 或类型的纯右值
\nstd::nullptr_t。
换句话说,您的构造函数也可以使用各种值为 0 的整数文字来调用:
\n\nCA{ 0 };\nCA{ 0u };\nCA{ 0LL };\nCA{ 0x0 };\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |