【发布时间】:2020-10-27 22:36:35
【问题描述】:
假设我有一个定义shared_ptr 的方法。该方法完成后,shared_ptr 也将被删除。在此期间,我有另一个成员使用该shared_ptr。所以我想将shared_ptr 的生命周期延长到初始方法之后。
void initial_method(int input)
{
std::shared_ptr<int> a { std::make_shared<int>(input) };
some_delayed_method(a);
}
本例中是否可以手动将a的引用计数加一?
some_delayed_method() 就像一个支队,在initial_method() 返回后一次引用a。
【问题讨论】:
-
您不必这样做。
std::shared_ptr在方法调用期间有效。 -
简单地复制 shared_ptr 应该足以延长它所指向的
int的生命周期,这是你的想法吗? -
请edit您的问题并澄清问题所在:我看到至少有两个人(包括我自己)误解了它。也许显示更多您的代码。也许添加一些显示问题所在的打印语句。
-
@OS2 你编辑了你的问题,这完全改变了它的范围!在任何情况下,您都应该显示 some_delay_method 的代码。
标签: c++ shared-ptr ownership-semantics