为什么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 @   anesu  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示