首页 > 编程 > C++ > 正文

C++ 11为什么会引入nullptr?

2019-11-08 03:07:48
字体:
来源:转载
供稿:网友

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 *)。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选