C++引用计数智能指针

;template<typename Type>class auto_ptr_{public:auto_ptr_(Type *t = NULL) :ptr(t), count(new int(1)){}auto_ptr_(const auto_ptr_& at) :ptr(at.ptr), count(at.count)//先将count指向at的count。{count[0]++;//然后对count+1,因为多了一个对象对原对象的指向。}auto_ptr_& operator=(const auto_ptr_ &at){if (this != &at){if (ptr == at.ptr)return *this;//如果他们都指向同一个对象就直接返回。else{realse();//否则先释放他对原来对象的拥有。ptr = at.ptr;//重新分配一个对象。count = at.count;//计数指向所指对象。count[0]++;//计数加1。}}return *this;}~auto_ptr_(){realse();}Type* operator->(){return ptr;}Type& operator*(){return *ptr;}private:void realse(){if (–count[0] == 0){cout << “free” << endl;delete []count;if (ptr != NULL){delete[] ptr;}}}private:int *count;Type *ptr;};int main(){int *a = new int(1);auto_ptr_<int> ps(a);cout << *ps << endl;return 0;}

,愚者用肉体监视心灵,智者用心灵监视肉体

C++引用计数智能指针

相关文章:

你感兴趣的文章:

标签云: