#include<iostream>
using namespace std;class test {
public:test() {cout << "调用构造函数" << endl;}~test() {cout << "调用析构函数" << endl;}
};int main(void) {//1.构造函数unique_ptr<test>t1;unique_ptr<test>t2(new test());unique_ptr<test[]>arr_t(new test[5]);unique_ptr<test[]>arr_t2;//2.赋值一定要使用移动语义t1 = move(t2);//move : 把左值转化为右值arr_t2 = move(arr_t2);unique_ptr<test[]>arr_t3;test* arr_t4 = new test[6];arr_t3.reset(arr_t4);//3.主动释放对象unique_ptr<test>t3(new test());t3 = NULL;//或 t3=nullptr;//或 t3.reset();//4.release 智能指针脱管,由普通指针接管,需要手动释放内存unique_ptr<test>t4(new test());test* temp;temp=t4.release();delete temp;//5.其他用法与auto_ptr 一致return 0;
}