More Effective C++(2)
来源:互联网 发布:西安软件行业优惠 编辑:程序博客网 时间:2024/04/30 12:32
class Base{public:Base(object* pValue){try{//TODO }catch(exception){ m_pValue.release(); } }~Base(); private: shared_ptr<object> m_pValue;};
在ctor中抛异常的时候例如
</pre><span style="font-size:18px"></span><p></p><p><span style="font-size:18px"> 这里使用了ctor中的exception</span></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"> 这里值得注意是在ctor中如果抛出异常话,那么就不会调用dctor,那么就需要在异常里面直接对所建的对象进行析构, 这里不该称之为是对象因为一个完整的对象没有构建完,所以只能算是半个对象,那么析构掉它;</span></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"> 如果在dctor中使用exception的话例子如下</span></p><p><span style="font-size:18px"></span></p><pre name="code" class="cpp"><pre name="code" class="cpp">template<typename M> class Base{public:Base(){};~Base(){try{logCreateBase()}catch(){}} void logCreateBase();private: shared_ptr<M> p_mVlaue;};
其实这里的代码段在析构的时候保证了无忧;
如果logCreateBase代码段出现了exception那么就会在这里捕获异常,但是如果你在这里没有做exception的话,那么就会出现内存泄露,因为你的dctor没有完全执行完,所以你的对象没有完全析构掉,必然出现内存泄露;
现在看来看More Effective 真是本好书,,,,
但是里面有一节,中还在使用auto_ptr我感觉这个smart_pointer一般还是不要在single thread 中一般使用shared_ptr或者使用scoped_ptr这个指针不错,尽量减少auto_ptr的使用是明智的、
0 0
- More Effective C++(2)
- <<More Effective C++>>读书笔记2: 运算符
- <<More Effective C++>>读书笔记5: 技巧(2)
- 《more effective c++》读书笔记
- 《More Effective C++》读后感
- 《More Effective C++》笔记
- 《Effective C++》和《More Effective C++》汇总
- 《More Effective C++》读书笔记一
- 《more effective c++》笔记4
- More Effective C++:类型转换
- More Effective C++:类型转换
- More Effective C++:Item 27
- more effective c++--引用计数
- 读More Effective C++(1)
- More Effective C++:Item 27
- 《More Effective C++》读书笔记-异常
- 《More Effective C++》读书笔记-效率
- 《More Effective C++》读书笔记-技术
- [R语言绘图]饼状图pie
- Linux 下 C语言连接MYSQL数据库
- PHP-json_encode
- 设计模式-创建型模式#抽象工厂AbstractFactory
- 2015060910 - 如何成为一个杰出的程序员?
- More Effective C++(2)
- 过河问题的递归解法
- Yii2使用过程中一些小技巧的总结
- Erlang的算法-(一)递归快速排序和MapReduce分布式的快排
- [R语言绘图]直方图hist
- Catenyms
- 理解容器和迭代器
- Stanford 机器学习课程cs229 数学推导知识
- C APIs in extension and extensible languages by Roberto 部分翻译