测试代码

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

class test
{
public:
test()
{
}
~test()
{
cout << "over" << endl;
}

public:
string name;
int age;
};

int main()
{
shared_ptr<test> a = make_shared<test>();
a->name = "haha";
a->age = 18;

test *jk = new test();
jk->name = "jkjk";
jk->age = 19;

a.reset(jk); //jk不需要去delete,智能指针会管控它
cout << a->name << " " << a->age << endl;

unique_ptr<test> plpl(new test());
plpl->name = "pmpm";
plpl->age = 21;

auto p = plpl.release();//需要手动delete否则会造成内存泄露
cout<<p->name<<" "<<p->age<<endl;

delete p;
p=nullptr;
return 0;
}

运行结果

over
jkjk 19
pmpm 21
over
over