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

初始化

 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;
}

猜你喜欢

转载自blog.csdn.net/four_two_six_/article/details/130886740