C++11新特性之 nullptr
2015-11-08 23:57
387 查看
我们知道在编程的世界里,0有双重的角色,可以表示整数零,也可以表示一个空指针。
在C语言中,通过预编译宏NULL,可以区分0表示的是零还是(void*)0.
但是,在C++的世界中,这样是不可以的。C++中允许函数重载。例如:
如果把NULL定义为0,那么foo(NULL)将调用哪个函数呢?
这样的话,编译器不会知道调用哪个函数。
所以C++11引入了另一个关键字nullptr,作为一个空指针。
在C语言中,通过预编译宏NULL,可以区分0表示的是零还是(void*)0.
但是,在C++的世界中,这样是不可以的。C++中允许函数重载。例如:
void foo(char *); void foo(int);
如果把NULL定义为0,那么foo(NULL)将调用哪个函数呢?
这样的话,编译器不会知道调用哪个函数。
所以C++11引入了另一个关键字nullptr,作为一个空指针。
char *pc = nullptr; // OK int *pi = nullptr; // OK bool b = nullptr; // OK. b is false. int i = nullptr; // error foo(nullptr); // calls foo(char *), not foo(int);
相关文章推荐
- 【重新学习C语言】起步篇
- Doxygen for C++使用说明——注释代码一
- C++中的命令空间NameSpace定义和使用
- 第三节:整型数据和实型数据
- 第二节:标识符的组成和分类
- C++11 note-2 字符串 容器 迭代器
- 用Eclipse进行C++开发时Bianry not found的问题解决
- 《stl源码剖析》剖析
- C++中虚函数和虚基类说明
- 1.c/c++程序员面试宝典--基本数据类型
- C++客户端访问WebService
- C++关于变量数据类型的总结
- C++中的左值和右值
- Visual Studio 2010 C++ 工程文件解读
- C语言实现链表之单向链表(十五)测试用例
- c语言实现,图形化贪吃蛇
- c语言中对可变参数列表的简单理解
- hash表C语言实现
- C语言实现链表之单向链表(十四)链表打印和排序
- C++和C中const的使用