【发布时间】:2010-12-09 00:09:05
【问题描述】:
在下面的代码中,使用(!!p)而不是(p != NULL)有什么好处?
AClass *p = getInstanceOfAClass();
if( !!p )
// do something
else
// do something without having valid pointer
【问题讨论】:
-
我想知道
if (p)有什么问题。 -
您应该始终怀疑运算符是否超载。
!p或!=可能有特殊行为。 -
Kobi - 我不记得了,但是重载的运算符是否也适用于对象的 指针?似乎他们不会;如果我是对的,在这种情况下,实际上并没有任何重载运算符问题。 (不管我说得对不对,这是一个很好的观点,而且本身就值得 +1)
-
他们确实可以
Object* operator+(Object const*, Object const*)是一个有效的签名...... -
@Twisol:不,你第一次是对的。不能为非类/非枚举类型重载运算符。非成员重载不会改变任何东西。如果你愿意,你可以声明它,但重载决议永远不会考虑它。在原始示例(指针类型)中,运算符重载是不可能的。