一个简单的类似auto_ptr的类

 

保证发生异常后,动态创建的对象被正确删除。

#include <iostream>
#include <cstddef>
using namespace std;

template<class T,int sz=1>
class PWrap
{
 T* ptr;
public:
 PWrap()
 {
  ptr=new T[sz];
 }
 ~PWrap()
 {
  delete [] ptr;
 }
 T& operator[](int i)
 {
  if(i>=0&&i<sz) return ptr[i];
  throw exception();
 }
};

int main()
{
 PWrap<int> ivar;
 ivar[0]=10;
 cout<<ivar[0]<<endl;
 PWrap<int,3> ivar1;
 ivar1[0]=10;
 ivar1[1]=11;
 ivar1[2]=12;
 cout<<ivar1[0]<<endl;
 cout<<ivar1[1]<<endl;
 cout<<ivar1[2]<<endl;
 return 0;
};

 

你可能感兴趣的:(封装指针)