为什么c++空指针推荐使用nullptr而不是NULL

为什么c++空指针推荐使用nullptr而不是NULL

void who(void *ptr)
{
    cout << "我是指针!" << endl;
}
void who(int i)
{
    cout << "我是整形!" << endl;
}
int main()
{
    cout << "NULL是什么?:"<< NULL << endl;
    cout << "使用NULL的情况:" << endl;
    who(NULL);
    cout << endl << "使用nullprt的情况:" << endl;
    who(nullptr);
        return 0;
}

输出情况:


NULL是什么?:0

使用NULL的情况:

我是整形!

 

使用nullptr的情况:

我是指针!

 

NULL在C++其实是0,因此为了解决空指针表示问题,于是C++使用0来表示空指针。

但是实际上在上面的示例我们可以看到,函数在重载的时候会出现上述的问题:

即将NULL输入到函数中时,它选择的是0这个int的形参,产生了二义性。

 

于是为了解决这个新的问题,C++在C++11版本特地引入了nullptr这个新的关键词来表示空指针。

从上面的示例我们可以看到确实选择了正确的指针版本来输入进函数。

因此为了防止上述的情况的发生推荐使用nullptr来代替NULL表示空指针。

posted @ 2021-03-08 21:58  anesu  阅读(214)  评论(0)    收藏  举报