std::make_unique 使用

std::make_unique是C++14标准库中提供的一个函数模板,用于创建动态分配内存的对象,并以unique_ptr类型智能指针管理分配内存。

具体来说,std::make_unique函数模板接受任意数量的构造函数参数,并返回一个unique_ptr类型指针,该指针所管理的指向动态分配的对象。在这个过程中,std::make_unique会使用new表达式分配内存,并调用对象的构造函数对内存进行初始化。返回的unique_ptr类型指针会在智能指针销毁时自动释放所管理的内存空间。

以下是一个示例代码片段,演示如何使用std::make_unique函数动态分配对象:


#include <memory>
#include <iostream>

class MyClass
{
public:
    MyClass(int a, float b)
    {
        std::cout << "Constructor called with parameters: " << a << ", " << b << std::endl;
        // Other initialization code...
    }
};

int main()
{
    // Create a unique_ptr type pointer managed by std::make_unique function
    auto ptr = std::make_unique<MyClass>(10, 20.5);

    // Use the created object
    // ...

    return 0;
}

在上面的示例中,我们使用std::make_unique函数模板创建了一个MyClass类型的对象,并传递了两个构造函数参数10和20.5。该函数将会动态分配内存并返回一个unique_ptr类型指针,在main函数退出后自动释放分配的内存空间。

需要注意的是,如果编译环境不支持C++14标准,则无法使用std::make_unique函数模板。此时,可以用std::unique_ptr结合new表达式手动分配内存。同时也要避免在函数返回时,将unique_ptr对象作为函数返回值传递给其他指针或者析构了unique_ptr对象后,任何非空指针仍然指向已释放掉的内存,引起未定义行为的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值