使用 std::move 初始化 std::unique_ptr

Initialize std::unique_ptr with std::move

本文关键字:std unique ptr move 使用 初始化      更新时间:2023-10-16

最近我看到一些与此类似的C++代码

class MyClass {
    public:
    MyClass(std::unique_ptr< MyType > myValue)
        : _myValue(std::move(myValue)) {}
    std::unique_ptr< MyType > _myValue;
};

这是初始化unique_ptr的正确方法吗?明确的 std::move 不是不必要的吗?

是的,这是正确的。如果你删除move,编译器会抱怨unique_ptr中没有复制构造函数并拒绝你的代码。