当我删除QPointer
指向的对象时,我检查 的值QPointer
,它不是NULL
,但是当我检查它的isNull
函数时,它返回true
。
更奇怪的是,当我执行 ( !m_qpointer
) 时,它也会返回true
。那么这怎么可能呢?
(!m_qpointer)
当你删除它指向的对象时返回 true,因为这个操作符定义在qpointer.h
:
inline operator T*() const
{ return static_cast<T*>(const_cast<QObject*>(o)); }
它返回它所保护的指针。如果它已被删除,那么它将为空。
isNull()
如果它所保护的指针为空,则返回 true:
inline bool isNull() const
{ return !o; }
现在我不确定我检查 QPointer 的值是什么意思,它不是 NULL。为什么它应该为空?即使在删除了它所保护的指针之后,该QPointer
对象仍然应该是一个有效的对象。