标签: c++ c++11 unique-ptr
我知道还有其他方法可以做到这一点。但我决定试验一下:
unique_ptr<int> pi; pi = std::move(new int);
编译此代码时,编译器会出错。为什么呢?
答案 0 :(得分:3)
因为unique_ptr没有使用operator=“分配原始指针”功能 这可能是 以避免人们犯错误。
unique_ptr
operator=
(顺便说一句,你的std::move什么也没做。)
std::move
您可以使用构造函数:
std::unique_ptr<int> pi(new int);
或std::make_unique:
std::make_unique
auto pi = std::make_unique<int>();
或稍后分配reset():
reset()
std::unique_ptr<int> pi; pi.reset(new int);