自己写个智能指针
智能指针优点就是可以自动释放动态空间,不需要程序员再去操心delete的事了;缺点是在拥有权的转移,因为两个智能指针不能指向同一内存,那么在作为参数传递的时候简直就是送了它的小命. 下面是俺自己写的一个小小auto pointer.
template <class T>
class my_auto_ptr {
public:
my_auto_ptr () : ptr (0) {}
my_auto_ptr (T* p) {
if (p != ptr)
ptr = p;
}
my_auto_ptr (my_auto_ptr<T> q) { //转交owner ship
if (q && q != p) {
if (q) delete q.ptr;
q.ptr = p.ptr;
p.ptr = 0;
}
}
~my_auto_ptr () { //my_auto_ptr生命期结束时,清掉分配的内存
if (ptr) delete ptr;
}
private:
T *ptr;
};
class my_auto_ptr {
public:
my_auto_ptr () : ptr (0) {}
my_auto_ptr (T* p) {
if (p != ptr)
ptr = p;
}
my_auto_ptr (my_auto_ptr<T> q) { //转交owner ship
if (q && q != p) {
if (q) delete q.ptr;
q.ptr = p.ptr;
p.ptr = 0;
}
}
~my_auto_ptr () { //my_auto_ptr生命期结束时,清掉分配的内存
if (ptr) delete ptr;
}
private:
T *ptr;
};