C/C++知识要点5——智能指针原理及自定义实现
来源:互联网 发布:中南工程咨询设计 知乎 编辑:程序博客网 时间:2024/06/14 09:53
智能指针概述:
智能指针用来管理动态对象。其行为类似于常规指针,重要的区别是:它负责自动释放所指向的对象。
C++ 11标准库提供两种智能指针:shared_ptr、unique_ptr
区别是:shared_ptr允许多个指针指向同一个对象;unique_ptr则独占所指向的对象。
另外,还有一种weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象。
自定义智能指针实现方法:
实现方法使用引用计数方法。
智能指针将一个计数器与类指向的对象相关联,引用计数跟踪一共有多少个类对象共享同一个指针。(即这个类对象在多少个地方被引用到)
实现要点:
- 每次创建类的新对象的时候,初始化指针并将引用计数置为1;
- 当对象作为另一对象的副本而创建的时候,也就是拷贝构造时候,拷贝构造函数拷贝指针并增加与之对应的引用计数;
- 当对一个对象进行赋值操作的时候,赋值操作符 减少左操作数所指对象的引用计数(若引用计数减为0,则删除该对象),并增加右操作数指向对象的引用计数(因为左侧指针指向了右侧指针指向的对象,所以右侧指针指向的对象的引用计数增加1);
- 调用析构函数时候,减少引用计数(若减为0,则删除基础对象);
实现智能指针有两种经典策略:一是引入辅助类,二是使用句柄类。
下面例子使用辅助类来实现:
上述代码,实现了一个简单的智能指针类,可编译运行,逐条对比实现要点中的要求。
转载自:http://blog.csdn.net/tommyzht/article/details/47395385
阅读全文
0 0
- C/C++知识要点5——智能指针原理及自定义实现
- C/C++知识要点5——智能指针原理及自定义实现
- [C/C++] 智能指针的实现及原理
- c++—智能指针
- C/C++知识要点2——STL中Vector、Map、Set容器的实现原理
- [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
- 智能指针实现及原理
- C++——智能指针
- C++-智能指针——简单实现分析
- 【C++】智能指针的实现
- [c++]智能指针的实现
- C 语言实现智能指针
- (C++)智能指针的模拟实现及使用
- c\c++复习基础要点10---智能指针
- 智能指针的原理及实现方案
- 智能指针的原理及实现方案
- 智能指针的实现及原理
- 智能指针的原理及实现方案
- JavaScript中事件操作和设置事件
- Professional Assembly Language 十二章系统调用例子for mac
- UVALive 4999 Electricity Connection
- 在Action中操作域对象
- django视图层进阶
- C/C++知识要点5——智能指针原理及自定义实现
- (bzoj 1040 [ZJOI2008]骑士)<基环树森林dp>
- GEC210与QXC51用串口通信
- CF245H:Queries for Number of Palindromes(dp & 区间回文串数量)
- 用集合模拟斗地主的洗牌的发牌
- C++知识总结(9)
- Java并发:Callable与Future的应用
- Python OOP容器设计时合理引入列表方法
- R数组、列表、数据框、因子