:
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
是否为空 ?这些功能如何与QSharedPointer::data() != null
对应?
答案 0 :(得分:5)
来自QSharedPointer
类的Qt来源:
inline bool operator !() const { return isNull(); }
这证实了@JoachimPileborg在评论中所说的内容 - isNull()
函数和operator!()
是等效的。
答案 1 :(得分:3)
“null”QSharedPointer包装T * t,其中t等于0 / NULL / nullptr。这就是“对象为空”的含义
isNull()和operator!()是等价的,你可以使用任何一个。
默认情况下,共享指针为null,或者显式设置为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