智能指针(四)之shared_ptr
来源:互联网 发布:如何利用加密的js 编辑:程序博客网 时间:2024/06/05 02:27
1.auto_ptr:采用管理权转移的方法 ,防止拷贝后析构释放同一块内存
2scoped_ptr:禁止拷贝和赋值
3shared_ptr:要想使用拷贝构造,赋值运算符,但是析构的时候不会报错,我们想到了使用引用计数的方法,使得析构函数只释放一次内存。每次构造时,使引用计数count++,析构时看count是否为一,若不为一--count;若为宜则释放空间。
代码实现
template<class T>class Sharedptr{public:Sharedptr(T* ptr = NULL):_ptr(ptr), _count(NULL){if (ptr != NULL){_count = new int(1);}}Sharedptr(const Sharedptr& s)//拷贝构造:_ptr(s._ptr), _count(s._count){if (s._ptr != NULL){++(*_count);}}Sharedptr &operator= (const Sharedptr& s){if (_ptr != s._ptr){Sharedptr tmp(s);std::swap(_ptr,tmp._ptr);std::swap(_count, tmp._count);}return *this;}~Sharedptr(){if (_count!=NULL && *_count == 1){delete _ptr;delete _count;_ptr = NULL;_count = NULL;}else--(*_count);}private:T* _ptr;int *_count;};int main(){Sharedptr<int> s1(new int(10));Sharedptr<int> s2(new int(20));Sharedptr<int> s3(s1);s2 = s1;system("pause");return 0;}
阅读全文
0 0
- 智能指针(四)之shared_ptr
- 智能指针之shared_ptr
- 智能指针之 shared_ptr
- 智能指针之shared_ptr
- 智能指针之shared_ptr
- 智能指针之shared_ptr
- 智能指针之 shared_ptr
- 智能指针之shared_ptr
- 智能指针之shared_ptr
- C++ 智能指针之shared_ptr
- 智能指针类之shared_ptr
- C++:智能指针之shared_ptr
- C++之智能指针shared_ptr
- C++之智能指针shared_ptr
- C++11智能指针之shared_ptr的使用(1)
- 浅析boost之智能指针—shared_ptr
- C++11智能指针之shared_ptr、weak_ptr
- C++11智能指针之shared_ptr、weak_ptr
- 编译GDAL1.1.0
- Java多线程编程技术之入门基础
- c#多线程和Socket笔记
- 使用opencv进行人脸识别
- 第一节:Python的基础—基本的数据类型
- 智能指针(四)之shared_ptr
- 页面的根元素lang和manifest
- tomcat部署项目,仅启动一次
- 多态中的向上转型和向下转型问题
- 3.C位数差 离散化+树状数组
- go——奇怪的iota
- JavaShowAlgorithm-Add Two Numbers 链表数相加
- 实验七参考命令
- linux安装mysql