std::make_unique
时间: 2023-08-22 07:13:25 浏览: 134
std::make_unique是C++14中引入的一个函数模板,用于动态分配并初始化一个std::unique_ptr对象。它的语法如下:template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args);\[1\]
使用std::make_unique可以方便地创建一个指向动态分配对象的std::unique_ptr,并自动调用对象的构造函数进行初始化。以下是一个使用std::make_unique的示例代码:
#include <memory>
#include <iostream>
class Foo {
public:
Foo(int x, int y) : m_x(x), m_y(y) {}
void Print() {
std::cout << "m_x = " << m_x << ", m_y = " << m_y << std::endl;
}
private:
int m_x;
int m_y;
};
int main() {
auto ptr = std::make_unique<Foo>(1, 2);
ptr->Print();
return 0;
}\[2\]
在这个示例中,我们使用std::make_unique创建了一个指向Foo对象的std::unique_ptr,并传递了参数1和2给Foo的构造函数进行初始化。然后我们通过指针调用了Foo对象的Print函数,输出了m_x和m_y的值。
总结来说,std::make_unique是一个方便的函数模板,用于动态分配并初始化std::unique_ptr对象。它可以简化代码,并提供了更安全的内存管理方式。\[1\]\[2\]
#### 引用[.reference_title]
- *1* *2* [C++ 的 make_unique(含 C++ 代码示例)](https://blog.csdn.net/m0_51913750/article/details/130879949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [std::make_unique 使用](https://blog.csdn.net/oHeHui1/article/details/130790011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文