std::make_unique
是 C++11 标准引入的一个模板函数,用于动态分配指定类型的内存,并返回一个指向分配内存的唯一指针 (即 std::unique_ptr
)。
std::make_unique
的语法如下:
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args);
其中,T
是指定的类型,Args
是可变长模板参数包,用于传递给指定类型的构造函数的参数。在调用 std::make_unique
时,通过 Args
包传入构造函数的参数会被转发给类型 T
的构造函数,以生成相应的对象实例。该函数返回的指针是一个 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;
}
在这个示例中,我们定义了一个名为 Foo
的类,并使用构造函数接受两个 int
类型的参数初始化了一个对象实例。然后,我们使用 std::make_unique
函数动态地分配内存并创建了一个 Foo
类型的对象,该对象被封装在一个 std::unique_ptr
中并命名为 ptr
,最后使用指针访问对象的成员函数 Print
。
【补充】:C++ 的头文件 <memory>
C++ 的头文件 memory
中包含了操作指针和内存的一些类和函数,主要用于动态内存的管理和操作。memory
头文件中主要包括以下类和函数:文章来源:https://www.toymoban.com/news/detail-640554.html
-
std::unique_ptr
:智能指针类,用于管理动态分配的对象,自动处理内存的分配和释放,避免内存泄漏。 -
std::shared_ptr
:共享指针类,可用于多个指针指向同一个对象,达到共享资源的目的。 -
std::weak_ptr
:弱指针类,用于解决std::shared_ptr
的循环引用问题。 -
std::allocator
:用于分配和释放一段已知大小的连续内存区域,通常与 STL 中容器一起使用。 -
std::unique_ptr<T[]>
:为数组提供自动内存管理的智能指针,可用于管理动态分配的数组的内存释放。
很多时候,memory
头文件是其他 STL 组件的基础,例如容器和算法。有很多使用 STL 的编译器和库实现,因此 memory
头文件可能与其他头文件一起自动包含在您的 C++ 应用程序中。
在使用 memory
头文件时,需要确保了解自己正在使用的特定函数和类的使用场景,并了解其对内存分配和释放的影响。文章来源地址https://www.toymoban.com/news/detail-640554.html
到了这里,关于C++ 的 make_unique(含 C++ 代码示例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!