树上小屋

这是一个将艺术和工程融为一体的活计.

导航

自己写个智能指针

智能指针优点就是可以自动释放动态空间,不需要程序员再去操心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;
};

posted on 2006-08-15 10:58  euclid  阅读(247)  评论(1编辑  收藏  举报