我正在尝试理解我正在查看的代码:
class ShipFactory
{
public:
Ship make_ship(....) { ... }
static std::unique_ptr<ShipFactory>&& get_factory()
{
if (!m_factory) {
m_factory.reset(new ShipFactory);
}
return std::move(m_factory);
}
...
public:
static std::unique_ptr<ShipFactory> m_factory;
};
std::unique_ptr<ShipFactory> ShipFactory::m_factory;
...
// used like this:
ship = ShipFactory::get_factory()->make_ship(...);
我的问题是关于get_factory方法的。我真的不明白为什么它会向std::unique_ptr返回一个右值引用,或者这会做什么。我也不完全相信它是有效的。
发布于 2019-04-15 02:21:08
与auto_ptr
不同,您不能复制unique_ptr
,因为该构造函数已被删除,这对unique_ptr
没有任何意义,因为它拥有它所指向的内存,但您可以移动它。这就是这里发生的事情,重置一个unique_ptr
,然后移动它。它具有与以下相同的效果:
auto ship = make_unique<ShipFactory>();
https://stackoverflow.com/questions/55678455
复制相似问题