C++ 的 make_unique(含 C++ 代码示例)

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 头文件中主要包括以下类和函数:

  • 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 头文件时,需要确保了解自己正在使用的特定函数和类的使用场景,并了解其对内存分配和释放的影响。

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值