C++中智能指针的工作原理和简单实现
2015-12-31 11:34
411 查看
C++中智能指针的工作原理和简单实现
智能指针:它的一种通用实现方法是采用引用计数的方法。智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;
当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;
对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;这是因此左侧的指针指向了右侧指针所指向的对象,因此右指针所指向的对象的引用计数+1;
调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除基础对象)。
实现智能指针有两种经典策略:一是引入辅助类,二是使用句柄类。这里主要讲一下引入辅助类的方法,看下面的例子:
相关文章推荐
- C/C++ 输入一个数 判断是否是素数
- 【C++】基础知识—内联(置)函数及register关键字
- C++中的基类与派生类
- 聚类算法-Hierarchical(MIN)-C++
- Java调用C/C++代码-生成java调用的DLL
- 聚类算法-K-means-C++实现
- C/C++ 随机数
- VC++中通过MultiByteToWideChar将string|char*转换为wstring|wchar_t*
- 聚类算法-DBSCAN-C++实现
- 表达式求值c语言
- iOS OC语言: Block底层实现原理 (转载)
- 用C++ TR1 生成随机数
- C语言-算法题
- c 语言 size_t 类型
- 乘积配对,找出输入数据中所有两两相乘的积为 12的个数--C++
- Windows Sqlserver Automatic Log Audit Via C/C++
- Visual Studio 2008 C++ 内存泄露检测
- 【C语言疯狂讲义】(八)C语言一维数组
- C++开发人脸性别识别教程(4)——OpenCv的人脸检测函数
- C++ 工具类 [StrUtil] 和 工具方法