引用C ++ 11:(18.2 / 9)
nullptr_t定义如下:Run Code Online (Sandbox Code Playgroud)namespace std { typedef decltype(nullptr) nullptr_t; }
nullptr_t作为同义词的类型具有在3.9.1和4.10中描述的特征。[注意:虽然nullptr不能使用的地址,但是nullptr_t可以使用作为左值的另一个对象的地址。—尾注]
我们是否需要类型的对象nullptr_t(除外nullptr)?
在这种情况下很有用,对我来说足够了:
#include <cstddef>
#include <iostream>
#include <limits>
int bonus(int){return std::numeric_limits<int>::max();}
int bonus(std::nullptr_t){return 0;}
int main()
{
std::nullptr_t bar;
std::cout << bonus(0) << "\n";
std::cout << bonus(nullptr) << "\n";
std::cout << bonus(bar) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
C ++是一种通用语言,如果与之关联的类型nullptr不是过载解析系统的一部分,这将很烦人。
nullptr是prvalue,因此您不能使用其地址。(这不是对象。)注释指的是这样的情况:
nullptr_t n;
Run Code Online (Sandbox Code Playgroud)
然后,n是一个普通的类型的对象,nullptr_t因此您可以获取其地址。这似乎没有什么用,但是在通用代码中,此功能可能会以某种方式出现。
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |