如何获得对具有shared_ptr的对象的引用?

时间:2012-11-27 00:56:28

标签: c++ shared-ptr

如何获取对shared_ptr<T>的对象的引用? (对于一个简单的类T

1 个答案:

答案 0 :(得分:6)

operator*已经返回了一个引用:

T& ref = *ptr;

或者,我想我可以给出一个更有意义的例子:

void doSomething(std::vector<int>& v)
{
    v.push_back(3);
}

auto p = std::make_shared<std::vector<int>>();

//This:
doSomething(*p);

//Is just as valid as this:
vector<int> v;
doSomething(v);

(注意,使用引用自由对象的引用当然是无效的。保持对对象的引用与保持shared_ptr实例的效果不同。如果shared_ptr实例的计数降为0 ,无论有多少引用引用它,对象都将被释放。)