C++学习笔记之NULL vs nullptr
来源:互联网 发布:淘宝货到付款怎样开通 编辑:程序博客网 时间:2024/05/01 07:33
写在前面
随着C++11标准的出现,C++的规范也越来越严谨,在减少语言的二义性上,C++委员会确实做了很多努力。至于那些学了C++98或者03的标准,就以为C++很烂的人,我只想送四个字,坐井观天。
NULL vs nullptr
在过去,我们如果要表示一个指针为空,我们条件反射肯定会这么写:
int *p = NULL;
然而啊,有没有想过这是有问题的,比如下面的这段代码:
#include <iostream>#include <string>using namespace std;void func(int* num){ cout << "this is the ptr function..." << endl;}void func(int num){ cout << "this is the normal function..." << endl;}void main(int argc, char** argv){ func(NULL);}
程序会输出什么??笔者问了好多人,他们一致的回答就是:输出this is the ptr function…啊,还不忘带一句嘲讽。其实啊,这里输出的是:
其实啊,在编译器进行解释程序时,NULL会被直接解释成0,所以这里的参数根本就不是大家所想的NULL,参数已经被编译器偷偷换成了0,0是整数啊,所以调用的是第二个函数。所以一些编程大师也建议将NULL换成0,这样可以减少后期维护的困难。但是我要怎么调用第一个函数呢?网上有很多解决办法(大多是利用之前的标准写的)。
C++11的出现彻底解决了这个问题,nullptr在C++11中就是代表空指针,不能被转换成数字(具体底层是怎么实现的,大家可以看看API,笔者表示看不大懂 T_T),那么我们再试试,看这次的结果是什么?
怎么样,看到结果了吧。
阅读全文
2 0
- C++学习笔记之NULL vs nullptr
- c++ nullptr vs NULL
- C/C++之NULL、0、nullptr详解
- NULL、0、nullptr (C++)
- 学习笔记:nullptr
- C ++中的NULL与nullptr的区别
- C/C++中的NULL与nullptr
- <Effective Mordern C++>笔记:Item 8:prefer nullptr to 0 and NULL.
- 讨论nullptr和NULL
- 讨论nullptr和NULL
- 讨论nullptr和NULL
- nullptr和NULL
- NULL和nullptr
- 讨论nullptr和NULL
- NULL、0、nullptr
- NULL 和 nullptr
- NULL和nullptr
- nullptr和NULL
- 计算两点间的距离(HDU)
- 城市浅谈
- cocos 3d基础教程
- 淘淘商城系列——KindEditor富文本编辑器的使用
- leetcode.485. Max Consecutive Ones
- C++学习笔记之NULL vs nullptr
- 网络应用模型
- Chrome插件推荐
- less和vim中使用正则表达式搜索
- 弹窗popWindow
- 玲珑杯----C 咸鱼魔法记
- 微量元素
- Android CTS 测试
- 算法导论程序37--动态规划原理