如何获得对拥有shared_ptr<T>
它的对象的引用?(对于一个简单的类T
)
问问题
9250 次
2 回答
14
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,则该对象无论有多少引用引用它,都将被释放。)
于 2012-11-27T00:58:42.377 回答
0
有没有共享参考的概念?
实际上是的!shared_ptr
提供了一个“别名构造函数”,可以完全用于此目的。它返回一个shared_ptr
使用与输入相同的引用计数shared_ptr
但指向不同的引用,通常是从支持数据派生的字段或值。
ptr
只要这个 shared_ptr 存在,程序员就有责任确保它保持有效,例如在典型的用例中,ptr
它是由管理的对象的成员r
或别名(例如,向下转换)r.get()
shared_ptr 的别名构造函数是干什么用的?更详细地介绍了这一点,包括如何使用它的示例。
于 2022-01-13T00:42:29.427 回答