C中NULL是宏定义的void*指针:
#define NULL ((void*)0)C++中void*指针不能隐式转换成其他类型的指针,所以NULL是0的宏定义:#define NULL 0那么,假如有重载函数f(int)和f(T *),调用时用f(NULL),那么就会出现二义性,无法确定调用那个函数。nullptr是一个空指针类型nullptr_t的常量,nullptr_t类型可隐式转换为其他类型的指针,但不能转换为int,
在调用f(nullptr)时就能明确调用f(T *)。
新闻热点
疑难解答
图片精选