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