1

如果我写这段代码:

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

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

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

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

4

2 回答 2

4

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

如果没有其他 QSharedPointer 对象引用它,QSharedPointer 将在超出范围时删除它所持有的指针。

QSharedPointer::data()除了_

返回此对象引用的指针的值。

于 2016-03-13T15:47:47.200 回答
4

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

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

这直接取自Qt 源代码

于 2016-03-13T15:48:25.080 回答