C++11 新特性之 nullptr
来源:互联网 发布:软件项目管理实践 编辑:程序博客网 时间:2024/04/30 01:32
对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象。
NULL是一个宏定义
在C++中,NULL被定义为常数0
考虑下面的程序
nullptr适用于所有指针类别,包括函数指针和成员指针
NULL是一个宏定义
在C中将NULL定义为void*指针值为0
#define NULL (void*)0
在C++中,NULL被定义为常数0
#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif
考虑下面的程序
#include <iostream>#include <typeinfo>using namespace std;void f(int i){cout << "f(int)" << endl;}void f(void* ptr){cout << "f(void*)" << endl;}int main(){f(NULL); return 0;}
输出结果:
nullptr取代了有错误倾向的NULL,nullptr可以被理解为指向NULL的指针
#include <iostream>#include <typeinfo>using namespace std;void f(int i){cout << "f(int)" << endl;}void f(void* ptr){cout << "f(void*)" << endl;}int main(){//f(NULL);f(0); //输出为f(int)f(nullptr); //输出为f(void*)return 0;}
nullptr适用于所有指针类别,包括函数指针和成员指针
const char *pc = str.c_str();if (pc != nullptr)cout << pc << endl;void (*func)() = nullptr;
不能将nullptr赋值给整形
int i1 = nullptr; //errorif (i1 == nullptr){} //errorif (nullptr){} //errornullptr = 0; //error
0 0
- C++11 新特性之 nullptr
- C++11 新特性之 nullptr
- C++11 新特性之 nullptr
- C++11新特性之 nullptr
- c++11新特性--nullptr
- 【C++11新特性】 nullptr关键字
- 【C++11】新特性——引入nullptr
- [C++11]新特性——引入了nullptr
- C++ 0x 新特性(5):Nullptr
- C++11之nullptr
- C+11 新特性
- 【C++】C++11新特性 之 lambda表达式的使用
- C/C++之NULL、0、nullptr详解
- [C++]C++11新特性
- 【C++】 C++11新特性
- c++特性:nullptr
- C++11之新特性
- C++11新标准之三:nullptr
- 跟阿根一起学Java Web开发一:开发环境搭建及JSPGen基础配置
- Kendo UI开发教程(2):准备Kendo UI开发环境
- Perl如何安装新模块/包
- 数据结构实验:哈希表(SDUT 1480)
- JD 1078:二叉树遍历
- C++11 新特性之 nullptr
- 人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经
- libsvm使用
- Latex排版工具的使用(一)
- 基于webrtc技术的session border controler (SBC)
- c++ 中的rand()
- 用PowerShell提取当前IE游览器的网址
- (四)String、List
- app 检查版本更新