NULL ,nullptr,nullptr_t,0 区别
来源:互联网 发布:网络电商招商 编辑:程序博客网 时间:2024/05/29 14:29
先看NULL的定义
#ifndef __cplusplus#define NULL ((void *)0)#else /* C++ */#define NULL 0
c语言中将NULL定义为空指针,而在c++中直接定义为0,这是因为C++是强类型的,void *是不能隐式转换成其他指针类型的。
既然NULL被定义成0,就存在二义性
c++ 中我们写这样一个函数 1
test(classA a,classB *pb);//函数1
我们可以这样调用
test(a,NULL);
没有问题,但是当我们重载这个函数2后,在做同样的调用
test(classA a,classB *pb);//函数1test(classA a,int i);//函数2test(a,NULL);//调用的是函数2
这个时候我们本来期望调用函数1,但是实际情况是调用了函数2。这就是NULL在C++中的二义性问题。c11提供了nullptr来解决这个问题,nullptr是一个关键字,表示一个空指针。
test(a,nullptr);//调用的是函数1
nulllptr_t为nullptr的类型
#if __cplusplus >= 201103L typedef decltype(nullptr) nullptr_t;#endif
由nullptr_t定义的任何变量都具有nullptr一样的行为。
阅读全文
0 0
- NULL ,nullptr,nullptr_t,0 区别
- 0,NULL,nullptr区别
- C++中 0 与 NULL 与 nullptr之间的关系,nullptr_t 的实现
- NULL、0、nullptr 区别分析
- NULL、0、nullptr的区别
- NULL、0、nullptr的区别?
- NULL、0、nullptr 区别分析
- NULL、0、nullptr 区别分析
- NULL,0和nullptr的区别
- nullptr与NULL区别
- NULL、0、nullptr
- NULL、0、nullptr
- NULL 0 和 nullptr
- NULL、0与nullptr
- NULL、0、nullptr (C++)
- nullptr,NULL,0
- 0 NULL nullptr浅析
- BOOL、bool的区别 && NULL、0、nullptr的区别
- java6
- html事件
- 反转单向和双向链表简化
- 编译那些事
- JVM笔记二
- NULL ,nullptr,nullptr_t,0 区别
- C语言基础之字符串(附测试代码)
- JS中 事件冒泡与事件捕获
- 聊天窗口
- 归并排序
- [题解]NOIP2015提高组の题解集合
- codevs1116 四色问题
- ThinkPHP框架访问文件提示No input file specified解决方案
- MongoDB 集合字段匹配查询方法