资源管理可能是程序在计算之外最常进行的操作。但仅仅因为频繁进行,所以很明显 —— 一些语言会向用户隐藏大部分甚至全部的资源管理。而仅仅因为隐藏了,也不代表不存在。每个程序都需要使用一定的内存,而内存就是一种资源。如果一个程序从不以某种方式与外部世界交互(至少输出结果)将毫无用处,而输入输出通道(文件、套接字等)也是资源。
在本章中,我们将首先回答以下问题:
在 C++ 程序中,什么是资源?
C++ 中管理资源的关键关注点是什么?
然后,介绍“资源获取即初始化”(RAII)并解释它如何通过回答以下问题来帮助实现高效的 C++ 资源管理:
C++ 中管理资源的标准方法是什么(RAII)?
RAII 如何解决资源管理的问题?
最后,将通过回答以下问题,讨论使用 RAII 的影响和可能需要注意的事项,为本章画上句号:
编写 RAII 对象时必须采取哪些预防措施?
使用 RAII 进行资源管理会带来什么后果?
C++ 奉行零开销抽象的理念,在核心语言层面并不会隐藏资源或其管理,但不应将隐藏资源与管理资源混为一谈。