C++中智能指针的工作原理和简单实现
2015-01-19 18:01
423 查看
智能指针:它的一种通用实现方法是采用引用计数的方法。智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。
每次创建类的新对象时,初始化指针并将引用计数置为1;
当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;
对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;这是因此左侧的指针指向了右侧指针所指向的对象,因此右指针所指向的对象的引用计数+1;
调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除基础对象)。
实现智能指针有两种经典策略:一是引入辅助类,二是使用句柄类。这里主要讲一下引入辅助类的方法,看下面的例子:
使用该方式的内存结构图如下:
每次创建类的新对象时,初始化指针并将引用计数置为1;
当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;
对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;这是因此左侧的指针指向了右侧指针所指向的对象,因此右指针所指向的对象的引用计数+1;
调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除基础对象)。
实现智能指针有两种经典策略:一是引入辅助类,二是使用句柄类。这里主要讲一下引入辅助类的方法,看下面的例子:
使用该方式的内存结构图如下:
相关文章推荐
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- C++中智能指针的工作原理和简单实现
- 简单模拟实现c++智能指针-指针移交控制权
- C++智能指针及其简单实现
- 一个简单的C++智能指针的实现
- c++智能指针的简单实现
- [置顶]C++ 引用计数技术及智能指针的简单实现
- C++ 几种智能指针的简单实现
- 【C++】智能指针auto_ptr简单的实现
- C++智能指针的简单实现
- C++ 最简单的 '智能指针' 的实现