C++ nullstr

在C++11之前,NULL常用于表示空指针,但其本质是常量0,可能导致函数重载时的歧义。C++11引入了nullptr关键字,专用于表示空指针,避免了这种问题。示例代码中,func(NULL)因与两个函数参数类型匹配而产生编译错误,而func(nullptr)则明确调用了接受char*的版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++11之前使用NULL表示空指针,C++11后改用nullptr表示空指针,因为NULL其实是常量0,会引起歧义。

看下面的例子:

#include<iostream>
using namespace std;
//定义fun函数
void func(char *str){
	cout<<"char * func"<<endl;
} 
//重载 
void func(int val){
	cout<<"int func"<<endl;
}
void test01(){
	
	//func(NULL); //引起歧义 因为NULL是常量0,上面两个函数都符合,因为C++11后使用nullptr 
	func(nullptr);//调用char*版本 
	
} 
int main(){
	
	test01();
	return 0;
	
}

当调用func(NULL)时编译器会报错,不知道调用哪个函数,因为NULL表示常量0,都符合上面两个函数的形参列表,

如果使用func(nullptr)就不会出现这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值