我想知道为什么 std::unique_ptr<int> foo (new int)
是合法的。
让我困惑的是,我认为输入参数类型应该是 int
在 std::unique_ptr<int>
但是,该类型 new int
是 int*
.
我是一个C++的新手。我想了一遍又一遍,但我还是不能理解.谁能给我说清楚?谢谢你的帮助。
其实 std::unique_ptr
有 几个构造函数重载 其一
explicit unique_ptr( pointer p ) noexcept;
构建一个
std::unique_ptr
该公司拥有p
,将存储指针初始化为p
并对存储的deleter进行值初始化。要求Deleter是DefaultConstructible,并且构造时不抛出异常。
接受一个值到 std::unique_ptr
因为该类的目的就是管理一个指针。相反,接受一个值到 std::make_unique
它将使用该值构造一个新对象。