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 *。)

参考:

(翻译:张潇)