//自自实现智能指针 ,不需delete自动释放堆内存。
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A()"<<endl;
}
void xxxx()
{
cout<<"xxxx"<<endl;
}
~A()
{
cout<<"~A()"<<endl;
}
};
class SmartPtr
{
public:
SmartPtr(A* pa)
{
_pa = pa;
}
~SmartPtr()
{
delete _pa;
}
//让对象 像 指针一样使用。
#if 1
A* getAp() //-> 被 A* operator->() 代替
{
return _pa;
}
#endif
#if 1
A& getAref() //-> 被 A& operator*()代替
{
return *_pa;
}
#endif
A* operator->()
{
return _pa;
}
A& operator*() //->
{
return *_pa;
}
private:
A *_pa;
};
int main()
{
SmartPtr sp(new A);
sp.getAp()->xxxx();
sp.getAref().xxxx();
sp->xxxx();//sp.operator->() //这个有疑问,怎么触发->重载的
(*sp).xxxx();//sp.operator*()
return 0;
}
5.自实现智能指针
猜你喜欢
转载自blog.csdn.net/CHEN_JYXHM/article/details/83003288
今日推荐
周排行