_Ty& operator*() const _THROW0()
{return (*get()); }
_Ty *operator->() const _THROW0()
{return (get()); }
_Ty *get() const _THROW0()
{return (_Ptr); }
最后是一个例子,已经注释,例子中使用了printf而没有使用cout,大家可以自已想想
#include<iostream>
#include<memory>
#include<new>
using namespace std;
//重载的new
void * operator new(size_t size,int data,char *flags)
{
return ::operator new(size);
}
//重载的delete
void operator delete(void *tmp)
{
cout<<"delete"<<endl;
free(tmp);
}
int main()
{
int *tmp=new (10,NULL)int[10];//调用重载的new
*tmp=5;
auto_ptr<int> pInt(tmp);
auto_ptr<int> pTmp(pInt);
printf("%d\n",*pTmp);
//cout<<*pTmp<<endl;//为什么没有用cout?可以自已想想,
return 0;//释放时调用重载的delete
}