Effective C++学习笔记 (13)
来源:互联网 发布:淘宝模式的优势和不足 编辑:程序博客网 时间:2024/05/29 19:02
本人学习C++不精,故重新学习,点滴记录与大家分享,不足之处还望大牛多多指教。
以对象管理资源
由于在写代码时很多时候需要用到资源,比如new一个对象之类的,这样一来资源的申请和释放需要程序员自己完成,对代码的逻辑需要谨慎设计,才能保证资源不会泄漏。
其实这类似的编程风格,在之前写C的时候也有编码规范来规定资源的释放,比如do while的运用啊,goto Exit0之类的方法,但是对于C++来说资源最好还是交给对象管理,这样可以大幅度减少程序员对资源的管理。
C++库提供了auto_ptr,boost库提供了shared_ptr(后面被合入C++标准库),这些智能指针都可以很好的管理资源。
下面看看auto_ptr的例子吧。
代码很简单,就上面几行,为了看到auto_ptr到底如何管理资源的,我们还是继续看汇编吧(很多时候需要认识真相我都会看看汇编o(∩_∩)o)。
在main函数退出后调用了auto_ptr的析构(因为该对象是栈变量),继续看看auto_ptr的析构做了啥。
没错,delete了指向base的指针。这样一来程序员就不用在关心对象的delete了。这其实就是effective C++上所讲的两个关键点:获得资源后立刻放进管理对象、管理对象运用析构函数确保资源被释放。
这里所讲的auto_ptr只是一个很简单的运用,其实auto_ptr只是一个很弱的智能指针,相比起shared_ptr还缺少了引用计数,所以auto_ptr在拷贝的时候都遵循一个原则“拷贝过后,被拷贝者被赋值为空”,所以在使用STL的容器模版时,是不能使用auto_ptr的。由于本机没有安装boost,所以暂时不能对shared_ptr做出分析。其实这些模版类都有对应的代码,大家有兴趣可以学习。
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记(1)
- 《Effective C++》学习笔记(一)
- 《Effective C++》学习笔记(二)
- 《Effective C++》学习笔记(三)
- 《Effective C++》学习笔记(四)
- 《Effective C++》学习笔记(五)
- 《Effective C++》学习笔记(六)
- 《Effective C++》学习笔记(七)
- 《Effective C++》学习笔记(八)
- Effective Objective-C 学习笔记(一)
- 《effective c++》学习笔记(一)
- 《effective c++》学习笔记(二)
- 《effective c++》学习笔记(三)
- 《effective c++》学习笔记(四)
- 模式匹配。。。opencv
- Android 应用开发笔记 - UI开发详解
- PyQt: Hello world
- dyld: Library not loaded: /usr/X11/lib/libfreetype.6.dylib 的解决方案
- 【流式计算】Twitter Storm源代码分析之Tuple是如何发送的
- Effective C++学习笔记 (13)
- VIM基本应用
- 基于电信定制机,关于Android中彩信信息采集的一些想法
- 【流式计算】Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
- 【hdoj1052】Tian Ji -- The Horse Racing(贪心)
- EA中关系
- 预处理,大文本和图片
- hdu 4268
- 爱情如江南的青花瓷