【发布时间】:2011-10-05 06:56:47
【问题描述】:
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 应该返回 shared_ptr<B> 还是 B*?
一般来说,完全避免在 C++ 代码中使用原始指针来代替智能指针是一种好习惯吗?
我认为 shared_ptr 应该只在明确转让或共享所有权时使用,我认为在函数分配一些内存、填充一些数据并返回的情况之外,这种情况非常罕见它,并且调用者和被调用者之间的理解是前者现在对该数据“负责”。
【问题讨论】:
-
我假设它不可能返回引用而不是指针?
-
这是一个很好的观点......为了讨论,让我们假设必须返回一个指针。
-
另外,如果我想问一个相关/非常相似的问题,是否可以编辑这个并添加到这里,或者我应该作为另一个问题提出?
标签: c++ smart-pointers