C++ 如果(a)或(a!=NULL),哪个更好

C++ 如果(a)或(a!=NULL),哪个更好,c++,C++,如果a是指针,那么测试if(a)和if(a!=NULL)之间是否有区别?哪一个更好?没有区别。使用使您的代码对您自己和他人更具可读性的代码。如果变得冗长,或者上下文清晰,可以省略显式NULL: void * p = std::malloc(n); if (!p) throw std::bad_alloc(); 这是一样的,但第二个让你的意图更加清晰 如果您使用的是C++11,那么应该使用,因为它不允许intx;如果(x==nullptr){…}你的编译器将为这两种语言发出相同的代码,但是如果(

如果a是指针,那么测试if(a)和if(a!=NULL)之间是否有区别?哪一个更好?

没有区别。使用使您的代码对您自己和他人更具可读性的代码。如果变得冗长,或者上下文清晰,可以省略显式NULL:

void * p = std::malloc(n);
if (!p) throw std::bad_alloc();

这是一样的,但第二个让你的意图更加清晰


如果您使用的是C++11,那么应该使用,因为它不允许
intx;如果(x==nullptr){…}

你的编译器将为这两种语言发出相同的代码,但是如果(a)
是一种完全正常的C语言习惯用法,这是你的程序员同事希望看到的。

@JamesMcNellis nevermind,baaaaaad reading。我的眼睛跳过<代码>如果A是指针通常,你应该在C++中使用<代码> new <代码>,但是我自己想不出一个更好的例子。@ TStnn:你有没有看过自己编写的<代码>::new new new new?对象和内存是C++中的两个独立的、无关的概念。不要混淆两者。你是对的,但是编写自己的运算符的人通常不会(现在)询问if(a)和if(a!=null之间的区别。@tstenner:True,但是使用
new
并且不知道非抛出版本的人也不应该检查null!:-)我认为
if(dynamic_cast(p)!=NULL)
将是一个很好的非分配示例。哪些程序员同事?有大量C程序员喜欢混淆,但在C++中,通常是<代码>(a!= null)< /> >或<代码>(a!=0)< /C>。