C++里被人遗忘的智能指针(2)

_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
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7e375444217dbd6f755b007a9509acff.html