gpt4 book ai didi

raii - 为什么RAII如此命名?

转载 作者:行者123 更新时间:2023-12-04 04:36:28 25 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。

9年前关闭。




Improve this question




我对这个习语的感觉是它很有用,因为它确保在使用它们的对象超出范围后释放资源。

换句话说,更多的是关于 取消收购去初始化 ,那么为什么这个成语是这样命名的呢?

最佳答案

首先,我应该指出,它被广泛认为是一个名称不佳的成语。许多人更喜欢 SBRM,它代表堆栈绑定(bind)资源管理。虽然我(不情愿地)同意使用“RAII”只是因为它广为人知和使用,但我确实认为 SBRM 可以更好地描述真实意图。

其次,当RAII 是新的时,它既适用于资源的获取,也适用于资源的释放。特别是,在当时很常见的是,初始化分两步进行。您首先定义一个对象,然后才动态分配与该对象关联的任何资源。许多风格指南都提倡这一点,主要是因为当时(在 C++ 有异常处理之前)没有很好的方法来处理构造函数中的失败。因此,风格指南经常说,构造函数应该只做最少的工作,特别是避免任何可能失败的事情——尤其是分配资源(还有一些人仍然这么说)。

不过,其中相当一部分已经处理了在析构函数中释放资源的问题,因此这与以前的做法并没有那么明显的区别。

关于raii - 为什么RAII如此命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com