STL学习笔记(六) 仿写的 不完整的autoptr类




#include <iostream>
using namespace std;


//可以自动释放动态分配的内存
template <typename T>
class autoptr
{
	T* p;
public:
	autoptr(T* p=NULL):p(p){}	
	~autoptr(){delete p;}
	
	autoptr(autoptr&a)
	{
		p = a.p;
		a.p = NULL;
	}
	
	autoptr& operator=(autoptr& a)
	{
		if(this == &a) return *this; //拷贝构造函数中要主要的问题: 拷贝自己
		p = a.p;
		a.p = NULL;
		return *this;
	}
	
	
	T& operator*()
	{
		return *p;
	}	
	
	T* operator->()
	{
		return p;
	}
	
};

class A
{
	int data;
public:
	A(int d):data(d){ cout << "A()" << endl;}
	~A(){cout << "~A()" << endl;}
	void show()
	{
		cout << this  << ' ' <<data << endl;
	}
};

int main()
{
	
	autoptr<A> p(new A(10));
	p->show();
	
	
	autoptr<A> q(p);
	q->show();
	
	

	
}


你可能感兴趣的:(STL学习笔记(六) 仿写的 不完整的autoptr类)