c++ std::make_unique
时间: 2024-11-15 11:28:18 浏览: 4
C++智能指针-unique-ptr智能指针详解.pdf
`std::make_unique`是C++11引入的一个库函数模板,它用于动态创建一个新的对象,并返回一个拥有该对象所有权的`std::unique_ptr`。这个函数的主要优点在于简化了内存管理,特别是对于单利模式和复杂对象的创建,它可以确保对象只被构造一次并且在`std::unique_ptr`生命周期结束后会被自动删除,避免了手动进行`new`和`delete`操作带来的潜在问题。
例如,如果你想创建一个复杂的对象,你可以这样做:
```cpp
std::unique_ptr<MyComplexClass> ptr = std::make_unique<MyComplexClass>();
```
这里,`MyComplexClass`替换为你实际需要创建的类名。`ptr`现在拥有对该对象的独占所有权,这意味着不会有其他地方能访问或修改这个对象,直到`ptr`被销毁。
需要注意的是,`std::make_unique`只能用于构造函数没有带默认参数的新式构造函数,以及那些能够接受`nullptr`作为最后一个参数的构造函数。否则,你需要先显式调用默认构造函数再传递给`std::make_unique`。
阅读全文