nullptr——空指针标识
空指针标识(nullptr)(其本质是一个内定的常量)是一个表示空指针的标识,它不是一个整数。(译注:这里应该与我们常用的NULL宏相区别,虽然它们都是用来表示空置针,但NULL只是一个定义为常整数0的宏,而nullptr是C++0x的一个关键字,一个内建的标识符。下面我们还将看到nullptr与NULL之间更多的区别。)
char* p = nullptr;
int* q = nullptr;
char* p2 = 0; //这里0的赋值还是有效的,并且p=p2
void f(int);
void f(char*);
f(0); //调用f(int)
f(nullptr); //调用f(char*)
void g(int);
g(nullptr); //错误:nullptr并不是一个整型常量
int i = nullptr; //错误:nullptr并不是一个整型常量
(译注:实际上,我们这里可以看到nullptr和NULL两者本质的差别,NULL是一个整型数0,而nullptr可以看成是一个char *。)
参考:
- the C++ draft section ???
- [N1488==/03-0071] Herb Sutter and Bjarne Stroustrup:A name for the null pointer: nullptr .
- [N2214 = 07-0074 ] Herb Sutter and Bjarne Stroustrup:A name for the null pointer: nullptr (revision 4) .
(翻译:张潇)