我不知道为什么 "std::unique_ptr<int>foo (new int) "是合法的,因为 "std::unique_ptr<int> "要求输入参数类型应该是 "int"?

问题描述 投票:-1回答:1

我想知道为什么 std::unique_ptr<int> foo (new int) 是合法的。

让我困惑的是,我认为输入参数类型应该是 intstd::unique_ptr<int>但是,该类型 new intint*.

我是一个C++的新手。我想了一遍又一遍,但我还是不能理解.谁能给我说清楚?谢谢你的帮助。

c++ c++11 unique-ptr
1个回答
7
投票

其实 std::unique_ptr几个构造函数重载 其一

explicit unique_ptr( pointer p ) noexcept;

构建一个 std::unique_ptr 该公司拥有 p,将存储指针初始化为 p 并对存储的deleter进行值初始化。要求Deleter是DefaultConstructible,并且构造时不抛出异常。

接受一个值到 std::unique_ptr 因为该类的目的就是管理一个指针。相反,接受一个值到 std::make_unique 它将使用该值构造一个新对象。

© www.soinside.com 2019 - 2024. All rights reserved.