初次窥见智能指针auto_ptr和shared_ptr

#include <memory>//shared_ptr要用的头文件
using namespace std;

class A      //测试auto_ptr和shared_ptr的delete能力
{
public:
	A(){ cout << 'A' << endl; }
	~A(){ cout << "~A" << endl; }
};

int main()
{
//	int *a = new int(3);
//	auto_ptr<int> p1 = a;//并不能这样初始化
	auto_ptr<int> p1(new int(3));
	auto_ptr<A> p2(new A);
	cout << *p1 << endl;
	*p1 = 4;       //可以改变值
	cout << *p1 << endl;
	auto_ptr<int> p3(p1);//p3取代了p1,p1置为NULL,同一个地址,只能被一个auto_ptr所指
//-------------------shared_ptr 内容-------------
    shared_ptr<int> p4(new int(3));
	shared_ptr<int> p5(p4);//p5将携手p4共同管理
	cout << *p4 << endl<<*p5<<endl;
}

  

原文地址:https://www.cnblogs.com/vhyc/p/5585316.html