为什么我不能将new创建的客户端对象分配给unique_ptr

时间:2017-03-25 14:43:23

标签: c++ c++11 unique-ptr

我知道还有其他方法可以做到这一点。但我决定试验一下:

    unique_ptr<int> pi;
    pi = std::move(new int);

编译此代码时,编译器会出错。为什么呢?

1 个答案:

答案 0 :(得分:3)

因为unique_ptr没有使用operator=“分配原始指针”功能 这可能是 以避免人们犯错误。

(顺便说一句,你的std::move什么也没做。)

您可以使用构造函数:

std::unique_ptr<int> pi(new int);

std::make_unique

auto pi = std::make_unique<int>();

或稍后分配reset()

std::unique_ptr<int> pi;
pi.reset(new int);
相关问题