一、概述
1、独占式,同一时刻只能有一个unique_ptr 指针指向这个对象,当unique_ptr 被销毁的时刻,它所指向的对象也会被销毁。
2、初始化
unique_ptr p1(newint(10)); unique_ptr p2= make_unique(10);// C++14中才有make_unique()方法,不支持删除器
二、常用操作
注意:不允许的操作 不能用unique_ptr 去初始化另一个unique_ptr ,独占式的智能指针,不支持复制操作。但是可以支持移动
1、移动语义
unique_ptr p1(newint(10)); unique_ptr p2= std::move(p1);// 移动之后,p1为空,p2指向原来p1所指向的内存
2、release()
// 放弃对指针的控制权,切断了智能指针和其所指对象之间的联系,返回裸指针,将智能指针置空, // 返回在这个裸指针可以手动delete,也可以用来初始化另一个智能指针 unique_ptr p1(newint(10)); unique_ptr p2(p1.release()); // 注意:release()返回的裸指针所指的内存,如果没有被其他智能指针指向,则需要自己手动delete这个裸指针,否则会内存泄漏
3、reset()
unique_ptr p1(newint(10)); unique_ptr p2(newint(10)); p1.reset();// 释放智能指针所指的对象,并将智能指针置空 p1.reset(p2);// 释放智能指针所指的对象,并将智能指针指向p2(新对象)
4、指向一个数组
unique_ptr