class B;
class A
{
public:
A ()
: m_b(new B())
{
}
shared_ptr<B> GimmeB ()
{
return m_b;
}
private:
shared_ptr<B> m_b;
};
假设B是一个在语义上不应存在于A生存期之外的类,即,对于B本身存在绝对是没有意义的。应该GimmeB
返回ashared_ptr<B>
或a B*
?
通常,是否最好完全避免在C ++代码中使用原始指针来代替智能指针?
我认为,shared_ptr
仅在显式转让或所有权共享时才应使用,在函数分配一些内存,用一些数据填充并返回它的情况下,我认为这种情况很少见,并且理解在呼叫者和被呼叫者之间,前者现在对该数据“负责”。