为什么我不能将 new 创建的 &client 对象分配给 unique_ptr

Why I can't assign , &client object created by new to unique_ptr

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

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

当我编译这段代码时,编译器报错。为什么?

因为 unique_ptroperator= 没有 "assign a raw pointer" 功能。
这是可能避免人们犯错误。

(顺便说一句,你的 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);