调用qsharedpointer的data()时引用的数量是否会改变

时间:2016-03-13 15:37:06

标签: c++ qt qsharedpointer

如果我写这段代码:

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

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

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

引用数量1或2是什么? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

它不会改变。 QSharedPointer仅与QSharedPointer共享指针。它不会赢,也无法与原始指针共享。

  

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

QSharedPointer::data()

外什么都不做
  

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

答案 1 :(得分:4)

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

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

直接来自Qt sources