make_unique
时间: 2023-06-22 11:33:59 浏览: 103
"make_unique" 是 C++11 中新增的一个函数模板,它的作用是创建一个动态分配的独占所有权的对象,返回一个指向该对象的 unique_ptr 智能指针。与传统的 new 操作不同,make_unique 可以在内存分配和对象构造过程中产生异常时自动进行资源回收,从而避免内存泄漏。使用 make_unique 的语法为:
```
auto p = std::make_unique<T>(args...);
```
其中 T 是对象类型,args 是构造函数参数。
相关问题
make_unique头文件
`make_unique` 是 C++11 标准中新增的一个函数模板,位于 `<memory>` 头文件中。这个函数模板允许我们使用统一的方式创建指向动态分配对象的 `unique_ptr` 智能指针,而无需手动管理分配和释放的内存。
它的用法和 `new` 操作符类似,但是会自动将分配的内存包装在 `unique_ptr` 中,确保在离开作用域时自动释放内存。
例如,使用 `make_unique` 创建一个指向 int 的 unique_ptr 可以这样写:
```
auto my_int = std::make_unique<int>(42);
```
这里,`make_unique` 函数会分配一个 int 类型的内存块,并将其初始化为 42,然后返回一个指向这个内存块的 `unique_ptr`。
需要注意的是,`make_unique` 是 C++11 标准中新增的函数模板,如果你的编译器不支持 C++11 标准,那么就无法使用 `make_unique`。此时,你可以使用 `unique_ptr` 的构造函数来手动创建智能指针,或者使用 Boost 库中的 `make_unique` 函数实现相同的功能。
make_unique用法
`std::make_unique` 是 C++11 标准引入的一个函数模板,用于在堆上创建一个动态分配的对象,并返回指向该对象的唯一指针。`std::make_unique` 的语法如下:
```c++
template <typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args);
```
其中,`T` 表示要创建的对象类型,`Args` 表示要传递给对象构造函数的参数类型。`std::make_unique` 的第一个参数是要创建的对象类型,后面的参数是传递给对象构造函数的参数。
使用 `std::make_unique` 创建对象的好处是,它可以避免手动管理内存,同时可以保证在出现异常时自动释放已分配的内存。例如:
```c++
#include <memory>
int main() {
auto p = std::make_unique<int>(42);
return 0;
}
```
这里我们使用 `std::make_unique` 创建了一个 `int` 类型的对象并初始化为 `42`,并将其赋值给 `p`,`p` 是一个 `std::unique_ptr<int>` 类型的智能指针,它会在作用域结束时自动释放内存,无需手动 `delete`。
阅读全文