nullptr:c++11引入的关键字,意为“空指针”
案例一观察:
char *p = NULL; //一个宏,为0
char *q = nullptr; //通过断点观察p和q,两者都是0x00000000
if (p == q) //条件成立
{
cout << "aa" << endl;
}
案例二:
//打印类型名,typeid(数据类型).name()
cout << typeid(NULL).name() << endl;
cout << typeid(nullptr).name() << endl;
结果:
结果说明:NULL和nullptr是两种不同的类型。
案例三:
void fun(void *p)
{
cout << "*p" << endl;
}
void fun(int p)
{
cout << "p" << endl;
}
int main()
{
fun(NULL); //调用p
fun(nullptr);//调用*p
return 0;
}
结论:
(1)使用nullptr能够避免在整数和指针之间混淆。
(2)对于指针的初始化尽量使用nullptr
(3)可以用nullptr取代NULL的,尽量用nullptr取代