在C++中,我们通常检查指针是否为null,我只知道我们应该使用
if(NULL == ptr)
Run Code Online (Sandbox Code Playgroud)
代替:
if(ptr == NULL)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么?
在additiol中,如果我们想将ptr初始化为null,我们应该使用ptr = NULL还是ptr = 0?是的,我知道在C++中,我们通常使用ptr = nullptr,我想知道为什么我们这样做只是想统一代码?谢谢
Yu *_*Hao 12
它是一种编码风格(名为Yoda Conditions),以避免编写=而不是==if语句,在if语句中使用赋值是有效的=,但它通常不是你想要的.
就个人而言,我不喜欢这样使用,因为它很难阅读,现代编译器会在你使用=if语句时发出警告.
另请注意:
if(ptr == NULL)是一样的if(!ptr).nullptr替换使用NULL.因此,要初始化空指针,首选使用ptr = nullptr关于为什么要使用nullptr在NULL:
在C++ 11之前,NULL通常在内部实现#define NULL 0,但问题是,0也是整数零.在某些情况下可能会造成麻烦.例如:
void func(int n);
void func(char *s);
func(NULL); //call which function?
Run Code Online (Sandbox Code Playgroud)
虽然auther暗示这NULL是一个指针类型,但编译器只知道调用func(0).所以第一个版本将被调用.
使用时func(nullptr),编译器会知道它是一个指针并调用第二个版本.
| 归档时间: |
|
| 查看次数: |
351 次 |
| 最近记录: |