3

在 Qt 文档中,我们读到:

bool QSharedPointer::operator! () const

Returns true if this object is null. 
This function is suitable for use in if-constructs, like:

 if (!sharedptr) { ... }

bool QSharedPointer::isNull () const
Returns true if this object is holding a reference to a null pointer.

这两个功能有什么区别?这很清楚什么是对空指针的引用,但在这里意味着什么

“如果对象为空”?

什么决定是否QSharedPointer 为 null?这些函数是如何对应的QSharedPointer::data() != null

4

2 回答 2

5

来自QSharedPointer班级的Qt来源:

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

这证实了@JoachimPileborg 在他的评论中所说的 -isNull()功能和operator!()等效。

于 2013-11-12T10:49:29.040 回答
3

“空”QSharedPointer 包装了一个 T* t,其中 t 等于 0/NULL/nullptr。这就是“对象为空”的含义

isNull() 和 operator!() 是等价的,你可以使用任何一个。

共享指针默认为空,或者显式设置为 0/nullptr:

QSharedPointer<T> t; //null
QSharedPointer<T> t2(new T); //not null
QSharedPointer<T> t3(0); //null
QSharedPointer<T> t4(nullptr); //null
t2.clear(); //not null before, now null
于 2013-11-12T09:51:18.033 回答