智能指针: unique_ptr(独占智能指针)

std::unique_ptr是C++中的一种独占型智能指针,不支持复制,但可以通过移动语义进行转移。它可以用于管理动态分配的内存,通过构造函数初始化,使用reset方法释放内存或指向新的对象,get方法则用于获取指向原始内存的指针。
摘要由CSDN通过智能技术生成

初始化

 std::unique_ptr是一个独占型的智能指针,它不允许其他的智能指针共享其内部的指针,可以通过构造函数初始化一个独占智能指针,但是不允许通过赋值将一个unique_ptr赋值个另一个unique_ptr。

int main()
{
    //通过构造函数初始化对象
    unique_ptr<int> ptr1(new int(10));
    //报错
    unique_ptr<int> ptr2 = ptr1;
    return 0;
}

unqiue_ptr不允许被复制,但是可以通过函数返回给其他的unique_ptr,还可以通过std::move()转移给其他的unique_ptr。还是一个unique_ptr独占一个地址。

使用reset方法可以让unique_ptr解除对原始内存的管理,也可以用来初始化一个独占的智能指针。

#include<iostream>
#include<memory>
using namespace std;

int main()
{
    unique_ptr<int> ptr1(new in(10));
    unique_ptr<int> ptr2;
    ptr1.reset();    //解除对原始内存的管理
    ptr2.reset(new int(250));    //重新指定智能指针管理的原始内存
    
    return 0;
}

如果想要获取独占智能指针管理的原始地址,可以调用get() 方法

int main()
{
    unique_ptr<int> ptr1(new int(10));
    unique_ptr<int> ptr2 = move(ptr1);
    
    ptr2.reset(new int(250));
    cout<<*ptr2.get()<<endl;    //得到内存地址中存储的实际数值250

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值