【发布时间】:2012-08-13 16:57:36
【问题描述】:
在创建 Stuff 并赋予 Foo 所有权方面,以下是合理且有效的方法吗?
class Foo
{
explicit Foo(const std::shared_ptr<Stuff>& myStuff)
: m_myStuff(myStuff)
{
}
...
private:
const std::shared_ptr<Stuff> m_myStuff;
}
std::shared_ptr<Stuff> foosStuff(new Stuff());
Foo f(foosStuff);
【问题讨论】:
-
不是,
Foo不取得所有权。shared_ptr的意义在于分享所有权。 -
或者更喜欢
std::shared_ptr<Stuff> foosStuff(new Stuff()); -
@juanchopanza 在这种情况下,您可能更希望看到 unique_ptr?
-
@Baz 如果你真的想拥有所有权,那么可以。