当我删除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对象仍然应该是一个有效的对象。