假设我有一个带有返回a的方法的类shared_ptr.
通过引用或值返回它可能带来的好处和缺点是什么?
两个可能的线索:
shared_ptrby(const)引用,则引用计数器不会递增,因此当它在另一个上下文(例如另一个线程)中超出范围时,我会冒被删除的风险.它是否正确?如果环境是单线程的,那么这种情况也会发生吗?谢谢大家.
返回智能指针时的最佳做法是什么,例如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)
但是我看到一些有经验的编码器返回原始指针,并将原始指针放在向量中.做正确的方法是什么?