[翻译] Effective C++, 3rd Edition, Chapter 3. Resource Management(资源管理)
2006-01-03 17:21
543 查看
Chapter 3. Resource Management(资源管理)
作者:Scott Meyers
译者:fatalerror99 (iTePub's Nirvana)
发布:http://blog.csdn.net/fatalerror99/
resource(资源)是这样一些东西:一旦你不再使用它,你需要把它还给系统。如果你不这样做,有百害而无一利。在 C++ 程序中,最普遍使用的资源是 dynamically allocated memory(动态分配的内存)(如果你分配了内存却从不释放,就会导致 memory leak(内存泄漏)的后果),但是内存仅仅是很多你必须管理的资源中的一种。其它常用资源包括 file descriptors(文件描述符),mutex locks(互斥锁),fonts and brushes in graphical user interfaces (GUIs)(图形用户界面中的字体和画刷),database connections(数据库连接)和 network sockets(网络套接字)。无论哪种资源,当你不再使用它的时候,将它释放都是非常重要的。
试图徒手确保这一点在任何条件下都是困难的,但是当你考虑到异常,带有多条返回路径的函数,以及在没有充分理解他所做的修改的影响的情况下就去更改软件的维护程序员,处理 resource management(资源管理)的特别方法很不充分这一现状就变得很清楚了。
这一章以一个建立在 C++ 对 constructors(构造函数),destructors(析构函数)和 copying operations(拷贝操作)的支持之上的,简单易懂的,object-based(基于对象)的资源管理方法开始。经验表明严格坚持这一方法能消除差不多全部的资源管理问题。接着,本章转移到专注于 memory management(内存管理)这一特定主题的 Item 中。这些后面的 Item 补充前面那些更一般化的 Item,因为管理内存的 objects(对象)必须知道如何正确地进行工作。
本章包括以下内容,点击打开:
Item 13: Use objects to manage resources
Item 14: Think carefully about copying behavior in resource-managing classes
Item 15: Provide access to raw resources in resource-managing classes
Item 16: Use the same form in corresponding uses of new and delete
Item 17: Store newed objects in smart pointers in standalone statements
作者:Scott Meyers
译者:fatalerror99 (iTePub's Nirvana)
发布:http://blog.csdn.net/fatalerror99/
resource(资源)是这样一些东西:一旦你不再使用它,你需要把它还给系统。如果你不这样做,有百害而无一利。在 C++ 程序中,最普遍使用的资源是 dynamically allocated memory(动态分配的内存)(如果你分配了内存却从不释放,就会导致 memory leak(内存泄漏)的后果),但是内存仅仅是很多你必须管理的资源中的一种。其它常用资源包括 file descriptors(文件描述符),mutex locks(互斥锁),fonts and brushes in graphical user interfaces (GUIs)(图形用户界面中的字体和画刷),database connections(数据库连接)和 network sockets(网络套接字)。无论哪种资源,当你不再使用它的时候,将它释放都是非常重要的。
试图徒手确保这一点在任何条件下都是困难的,但是当你考虑到异常,带有多条返回路径的函数,以及在没有充分理解他所做的修改的影响的情况下就去更改软件的维护程序员,处理 resource management(资源管理)的特别方法很不充分这一现状就变得很清楚了。
这一章以一个建立在 C++ 对 constructors(构造函数),destructors(析构函数)和 copying operations(拷贝操作)的支持之上的,简单易懂的,object-based(基于对象)的资源管理方法开始。经验表明严格坚持这一方法能消除差不多全部的资源管理问题。接着,本章转移到专注于 memory management(内存管理)这一特定主题的 Item 中。这些后面的 Item 补充前面那些更一般化的 Item,因为管理内存的 objects(对象)必须知道如何正确地进行工作。
本章包括以下内容,点击打开:
Item 13: Use objects to manage resources
Item 14: Think carefully about copying behavior in resource-managing classes
Item 15: Provide access to raw resources in resource-managing classes
Item 16: Use the same form in corresponding uses of new and delete
Item 17: Store newed objects in smart pointers in standalone statements
相关文章推荐
- [翻译] Effective C++, 3rd Edition, Item 15: 在 resource-managing classes(资源管理类)中提供对 raw resources(裸资源)的访问
- [翻译] Effective C++, 3rd Edition, Chapter 4. Designs(设计)和 Declarations(声明)
- [翻译] Effective C++, 3rd Edition, Chapter 6. Inheritance(继承)和 Object-Oriented Design(面向对象设计)
- [翻译] Effective C++, 3rd Edition, Item 14: 谨慎考虑 resource-managing classes(资源管理类)中的拷贝行为
- [翻译] Effective C++, 3rd Edition, Chapter 7. Templates(模板)和 Generic Programming(泛型编程)
- [翻译] Effective C++, 3rd Edition, Chapter 5. 实现
- [翻译] Effective C++, 3rd Edition, Chapter 1. 习惯于 C++
- [翻译] Effective C++, 3rd Edition, Chapter 2. Constructors(构造函数),Destructors(析构函数)与 Assignment Operators(赋值运算符)
- [翻译] Effective C++, 3rd Edition, Item 3: 只要可能就用 const
- [翻译] Effective C++, 3rd Edition, Item 6: 如果你不想使用 compiler-generated functions(编译器生成函数),就明确拒绝
- [翻译] Effective C++, 3rd Edition, Item 28: 避免返回 object 内部构件的 "handles"(“句柄”)
- [翻译] Effective C++, 3rd Edition, Item 29: 争取 exception-safe code(异常安全代码)(下)
- [翻译] Effective C++, 3rd Edition, Item 33: 避免覆盖(hiding)“通过继承得到的名字”(上)
- [翻译] Effective C++, 3rd Edition, Item 36: 绝不要重定义一个 inherited non-virtual function(通过继承得到的非虚拟函数)
- [翻译] Effective C++, 3rd Edition, Item 43: 了解如何访问 templatized base classes(模板化基类)中的名字(下)
- [翻译] Effective C++, 3rd Edition, Item 44: 从 templates(模板)中分离出 parameter-independent(参数无关)的代码(上)
- [翻译] Effective C++, 3rd Edition, Item 47: 为类型信息使用 traits classes(特征类)(下)
- [翻译] Effective C++, 3rd Edition, Item 49: 了解 new-handler 的行为(下)
- [翻译] Effective C++, 3rd Edition, Item 1: 将 C++ 视为语言的联合体
- [翻译] Effective C++, 3rd Edition, Item 5: 了解 C++ 为你偷偷地加上和调用了什么函数