调用 qsharedpointer 的 data() 时引用数是否发生变化

Does the number of references change when calling data() of a qsharedpointer

如果我写这段代码:

QSharedPointer<int> ptr(new int());  

指向整数的引用数为1。
但是当我这样调用 data() 时:

QSharedPointer<int> ptr(new int());   
int* ptr2 = ptr.data();  

引用数是1还是2?
感谢您的帮助。

不会变。 QSharedPointer 只与 QSharedPointer 共享指针。它不会也不能与原始指针共享。

QSharedPointer will delete the pointer it is holding when it goes out of scope, provided no other QSharedPointer objects are referencing it.

QSharedPointer::data()除了

什么都不做

Returns the value of the pointer referenced by this object.

调用data()不会改变引用计数。事实上,它并没有真正 任何事情。它的实现就是这样

inline T *data() const { return value; }

这直接取自Qt sources