Open bosthhe1 opened 1 year ago
为什么会增加nullptr关键字呐,是因为在c语言和c++中NULL都是一个宏,值为0,但是在下面传参的过程中发生了歧义,由于c++支持函数重载,所以在下面的函数中,将NULL和nullptr都传入,应该都是调用void* ptr这个传参函数,但是NULL是被定义为0,所以会去调用int i的函数,c++为了解决这个问题引入了nullptr关键字,这个关键字代表的是空指针,不能用来赋值非指针类型。
void func(void* ptr)
{
cout << "void* ptr" << endl;
}
void func(int i)
{
cout << "int i" << endl;
}
int main()
{
func(nullptr);
func(NULL);
return 0;
}
在c++中NULL是作为宏定义的,nullptr是增加的关键字 看颜色就知道nullptr为关键字,NULL为宏定义