深入浅出c++11之nullptr

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;   是允许的, 大家记住了!

猜你喜欢

转载自blog.csdn.net/kaizi318/article/details/108920821