C++d unique_ptr 中的make_unique
时间: 2023-09-13 18:08:00 浏览: 97
指针源码unique-ptr 与 unique-ptr与make-unique
在C++中,`std::make_unique`是一个函数模板,用于创建一个`std::unique_ptr`对象并初始化它。`std::unique_ptr`是一种智能指针,用于管理动态分配的对象的生命周期。
`std::make_unique`函数模板接受一个可变数量的参数,并返回一个已初始化的`std::unique_ptr`对象。它会自动推断要分配的对象的类型,并使用传递的参数来初始化该对象。
这是一个使用`std::make_unique`创建`std::unique_ptr`的示例:
```cpp
#include <memory>
int main() {
auto ptr = std::make_unique<int>(42);
return 0;
}
```
在上面的例子中,我们使用`std::make_unique`创建了一个指向整数的`std::unique_ptr`,并将其初始化为42。当离开`main`函数时,由于`std::unique_ptr`的析构函数会自动释放所指向的内存,所以不需要手动释放内存。
使用`std::make_unique`相比直接使用`new`操作符来创建`std::unique_ptr`对象有几个优点,其中之一是避免了显式指定删除器的需要(即使用自定义的删除函数)。此外,由于它是一个函数模板,可以根据所需的类型自动推断参数,从而减少了代码的重复性和错误的可能性。
阅读全文