容易混淆的成语名称RAII

Confusing idiom name RAII

我想我明白 RAII 的意思,我在 SO 上发现了很多关于这个习语的问题。我更关心的是 RAII 名称本身。我找不到将这个成语的四个词与其描述的概念相匹配的方法。有人问过 Bjarne 吗?

在我的理解中,RAII 的意思是:

我怎样才能向别人解释为什么 RAII 以这样的方式命名,而又不以这不是一个如此强大的成语的好名字为借口?

这样想:每个资源获取都必须是对象的初始化,使对象负责清理,而不是对象的初始化程序。不允许未初始化的资源获取。

在RAII类型中,构造函数获取需要管理的资源。所以,如果你这样做

RAII_Type foo;

然后那个资源获取发生在初始化的时候,所以资源获取就是初始化。

Resource A采集 Is I初始化

如前所述,获取任何资源都涉及使用资源的 descriptor/handle/identifier 初始化对象。释放资源 descriptor/handle/identifier 的正确位置 - 作为获取的强制性括号对 - 是对象析构函数。设计良好的 class 具有即发即弃的对象实例;用户代码不必担心资源泄漏,因为拥有对象应该是负责的。

干杯, 调频