NULL、nullptr、0
程序员文章站
2022-07-13 23:34:14
...
通常定义一个指针,为了避免变成野指针,通常会给指针赋空值
NULL是一个宏定义# define NULL 0
,所有C++中使用0作为NULL的值,NULL==0。
int *p=0;
int *p=NULL;
int *p=nullptr;
但有时候NULL和0在重载的时候会产生歧义
#include <iostream>
using namespace std;
void fun(int){cout<<"调用了int"<<endl;}
void fun(char*){cout<<"调用了char*"<<endl;}
int main(){
fun(NULL);//NULL为指针空值
fun(nullptr)
}
运行结果
调用了int
调用了char*
请按任意键继续. . .
NULL和nullptr都表示空指针
fun(NULL)原本想调用fun(char*)这个重载,但由于在C++中 NULL==0,所以fun(NULL)==fun(0),调用第一个函数,这时要想正确调用重载函数,用nullptr代替NULL,就不会出错。
上一篇: c语言NULL和0区别及NULL详解
下一篇: C与C++的一点区别
推荐阅读
-
错误类型:Provider (0x80004005)未指定的错误 的一个处理方法
-
从0开始学Vue
-
45天,从0到20000,我的微信公众号经营秘诀
-
解析PHP中empty is_null和isset的测试
-
selenium python虚拟点击网页 爬虫翻页功能 href=javascript:void(0)怎么翻页
-
Win10创造者更新15014电脑版升级卡在0%了怎么解决
-
MS Server和Oracle中对NULL处理的一些细节差异
-
安装IE9提示(0x80070422)错误原因是updata服务关闭导致
-
浏览器蓝屏0x00000050和igdpmd64.sys的四种解决方法
-
win7系统开机搜狗应用程序错误(0xc0000409)导致电脑死机