2015-10-20 76 views
0

當我刪除QPointer指向的對象時,我檢查了QPointer的值,它不是NULL,但是當我檢查它的isNull函數時,它返回trueQPointer檢查是否爲NULL?

更奇怪的是,當我這樣做時(!m_qpointer)它也返回true。 那麼這怎麼可能?

inline operator T*() const 
    { return static_cast<T*>(const_cast<QObject*>(o)); } 

它返回它守着指針:

+0

「當我刪除QPointer指向的對象時」,是的,您正在刪除對象而不是指針。 – Zen

+0

---> Object,現在刪除Object:----> MemoryAddressOfObject,正如你所看到的指針仍然存在並且指向相同的地址,但該對象不再有效。 –

回答

1

(!m_qpointer)返回true,當你刪除它指向的對象,因爲該運營商在qpointer.h定義。如果它已被刪除,則它將爲空。

isNull()返回true,如果守着指針爲空:

inline bool isNull() const 
    { return !o; } 

現在,我不知道你是什麼意思我檢查QPointer的價值,它不爲NULL。爲什麼它應該是空的? QPointer對象應該仍然是一個有效的對象,即使在刪除它正在守衛的指針之後。

相關問題