C++ nullptr

0.nullptr是C++11中新引入的常量,专门用来表示空值指针。

1.在C中,把(void *)0定义成NULL来初始化指针,表示空值指针。

2.在C++中,把0定义成NULL来初始化指针,表示空值指针。

这样在函数重载时会发生问题,如两个函数为

func(int);

func(char *);

调用时,func(0),会调用哪个函数,0作为一个整数还是作为空值指针?产生了二义性。

3.于是引入新的常量nullptr,其值为(void *)0,专门用来表示空值指针。

这样func(0)调用func(int);func(nullptr)调用func(char *),完美地解决二义性问题。

4.nullptr是nullptr_t的一个实例,等价于(void *)0,即空值无类型指针;nullptr_t,等价于void *,即无类型指针。

5.nullptr能够转换成任何指针类型,包括成员函数指针和成员变量指针;

     能够转换成bool类型,这是为了兼容普通指针都能使用if(ptr)判断是否为空指针的形式;

     但是不能被转换为整数0,这是为了避免产生二义性。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值