首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回右值引用

返回右值引用
EN

Stack Overflow用户
提问于 2019-04-15 02:09:45
回答 1查看 98关注 0票数 1

我正在尝试理解我正在查看的代码:

代码语言:javascript
运行
复制
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返回一个右值引用,或者这会做什么。我也不完全相信它是有效的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-15 02:21:08

auto_ptr不同,您不能复制unique_ptr,因为该构造函数已被删除,这对unique_ptr没有任何意义,因为它拥有它所指向的内存,但您可以移动它。这就是这里发生的事情,重置一个unique_ptr,然后移动它。它具有与以下相同的效果:

代码语言:javascript
运行
复制
auto ship = make_unique<ShipFactory>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55678455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档