c/c++ nullptr和NULL
nullptr是c++11中的关键字,表示空指针
要区分nullptr和NULL,首先要明白NULL的含义:
NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中NULL为整数0
所以在c++中int *p=NULL; 实际表示将指针P的值赋为0,而c++中当一个指针的值为0时,认为指针为空指针
然后理解nullptr:
nullptr是一个字面值常量,类型为std::nullptr_t,空指针常数可以转换为任意类型的指针类型。
在c++中(void *)不能转化为任意类型的指针,即 int p=(void)是错误的,但int *p=nullptr是正确的,原因
对于函数重载:若c++中 (void *)支持任意类型转换,函数重载时将出现问题下列代码中fun(NULL)将不能判断调用哪个函数
void fun(int i){cout<<"1";}; void fun(char *p){cout<<"2";}; int main() { fun(NULL); //输出1,c++中NULL为整数0 fun(nullptr);//输出2,nullptr 为空指针常量。是指针类型 }
相关推荐
Web前端成长之路 2020-07-07
hanjinixng00 2020-11-12
bearhoopIT之道 2020-11-11
拉斯厄尔高福 2020-10-19
dabian 2020-09-07
csdnyasin 2020-06-28
徐建岗网络管理 2020-06-26
penkgao 2020-06-25
fengjing81 2020-06-24
penkgao 2020-06-13
qscool 2020-06-12
chaocc0xs 2020-06-12
风吹夏天 2020-06-08
fengjing81 2020-06-06
jvm 2020-06-06
AaronPlay 2020-06-02