c++11为什么要引入 nullptr 这个关键字,这的好处是什么,作用是什么?
以前我们定义一个空指针写代码是这样
int* p =NULL; int*p=0;那为什么这样写的好好的,又要整出一个nullptr呢?
那么我们关键是要看这个NULL是怎么定义的,NULL不是关键字哈!
#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif看见了没,就是宏定义出来的, 也就是我们假设它为0,代表一个空指针,那这样有什么问题呢?
example:
void testfunc(char* test); void testfunc(int test); testfunc(NULL);这样的代码会不会出现问题,你自己试一下, NULL表示0的话,那我到底调用哪个呢?
所以c++11引入了这个关键字,为的就是解决这个问题!
testfunc(nullptr); 就一定会调用参数是指针类型的函数了!
注意事项:
nullptr还有一个特殊情况,(个人觉得这个功能不太友好)
BOOL bok =nullptr; 是允许的, 大家记住了!
keivin2006 认证博客专家 C/C vc/qt 音视频 一名c/c++/vc/qt 的小学生,“精通”c,“精通”c++,“精通”vc++,“精通”php,“精通”qt,“精通”java,“精通”python,“精通”c#,“精通”...! 编不下去了,只要见过名字的都我“精通”....为哈,因为我现在是csdn“砖家”了!本人qq: 88520350 qq学习群:930432714 (C/C++/QT/VC学习交流群) 海量学习资料都分享在群里指点学习方向,掌握学习要点,快速提高技术水平, 技术分享,共同学习!