相关疑难解决方法(0)

如何通过引用或值返回智能指针(shared_ptr)?

假设我有一个带有返回a的方法的类shared_ptr.

通过引用或值返回它可能带来的好处和缺点是什么?

两个可能的线索:

  • 早期的物体破坏.如果我返回shared_ptrby(const)引用,则引用计数器不会递增,因此当它在另一个上下文(例如另一个线程)中超出范围时,我会冒被删除的风险.它是否正确?如果环境是单线程的,那么这种情况也会发生吗?
  • 成本.传递价值肯定不是免费的.是否值得尽可能避免它?

谢谢大家.

c++ return smart-pointers

86
推荐指数
2
解决办法
6万
查看次数

返回智能指针时的最佳做法

返回智能指针时的最佳做法是什么,例如boost :: shared_ptr?我应该通过标准返回智能指针,还是底层的原始指针?我来自C#所以我倾向于总是返回智能指针,因为它感觉正确.像这样(跳过const-correctness更短的代码):

class X
{
public:
    boost::shared_ptr<Y> getInternal() {return m_internal;}

private:
    boost::shared_ptr<Y> m_internal;
}
Run Code Online (Sandbox Code Playgroud)

但是我看到一些有经验的编码器返回原始指针,并将原始指针放在向量中.做正确的方法是什么?

c++ boost smart-pointers

31
推荐指数
4
解决办法
2万
查看次数

标签 统计

c++ ×2

smart-pointers ×2

boost ×1

return ×1