2

当我删除QPointer指向的对象时,我检查 的值QPointer,它不是NULL,但是当我检查它的isNull函数时,它返回true

更奇怪的是,当我执行 ( !m_qpointer) 时,它也会返回true。那么这怎么可能呢?

4

1 回答 1

4

(!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对象仍然应该是一个有效的对象。

于 2015-10-21T08:04:20.013 回答