然而,班级QSharedDataPointer
拥有它。
我总是需要定义Class::pointer
typedef
以获得短缺,并使用Class::pointer(new Class)
创建指针。
有人知道这个的原因吗?
答案 0 :(得分:1)
我怀疑T *()运算符不存在的原因是因为T* data() function与许多其他Qt类(如QString,QByteArray等)一样,都提供了一个data()函数访问Qt类的基础数据。
这维护了跨Qt类的标准接口。
此外,通过重载运算符,如果要更改基础数据并且未在此处实现,则很容易出错。在我看来,使用data()函数可以让你更清楚你正在做什么。
QSharedPointer的data()函数也警告不要删除返回的指针,或者将它传递给任何可以删除它的东西,所以我把它看作是一个函数,如果你真的需要它,但是更好的你可以避免它,如果你使用它,仔细考虑发生了什么。
对于QSharedDataPointer,根据the documentation,调用运营商,此处呼叫detach(),以便安全呼叫。