#include
/*
智能指针,面向对象的指针。
该指针可以实现自动回收内存的功能。通过将指针交给对象来管理,对象放到栈中,栈由系统进行管理,
来实现自动回收功能,独辟蹊径,妙啊。
实现该智能指针的主要问题在于运算符的重载上。
*/
template
class SmartPtr
{
public:
SmartPtr(T * ptr)
:mptr(ptr)
{}
~SmartPtr()
{
delete [] mptr;
}
T& operator *()
{
return *mptr;
}
T * operator ->()
{
return mptr;
}
private:
T * mptr;
};
class Test
{
public:
Test(int a)
:ma(a)
{}
void Show()
{
std::cout<<“ma:”<<ma<<std::endl;
}
private:
int ma;
};
int main()
{
int* p = new int;
p = 20;
Test ptest = new Test(10);
ptest->Show();
SmartPtr<int> sp = new int;
*sp = 30;
SmartPtr<Test> sp2 = new Test(40);
sp2->Show(); //sp2.operator->() ==> (Test*)
return 0;
}