如何获取对shared_ptr<T>
的对象的引用? (对于一个简单的类T
)
答案 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 ,无论有多少引用引用它,对象都将被释放。)