QPointer检查是NULL?

时间:2015-10-20 20:52:17

标签: qt qpointer

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

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

1 个答案:

答案 0 :(得分:2)

删除它指向的对象时,

(!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 。为什么它应该为空? <{1}}对象即使在删除它正在保护的指针后仍然应该是一个有效的对象。