我最近试图理解一个 C++ 程序,该程序是由我认为具有函数式编程背景的某个人编写的:例如,他声明了一个他广泛使用的 closure 类,并且在一定程度上类似于函数式编程中的闭包。另一个类被称为守卫,但我还没有完全弄清楚它有什么用处。它似乎附加了某种清理功能。
我在其中看到名为 guard 的概念的唯一语言是 Erlang,但它看起来与我找到的代码并不相似。 C++ 代码的作者可能暗示过,在哪些其他语言中存在这样的概念?
最佳答案
对我来说,这听起来像是他在使用 RAII。
类构造函数/析构函数用于在异常安全的上下文中对称地处理某种形式的资源分配/释放(Java 程序员将调用 finally {} 作为析构函数保证被调用。)。
这是一个非常常见的 C++ 习语,在现代 C++ 中被广泛使用。
代码是不是这样的:
void Plop()
{
Guard guard(lock);
// Do lots of stuff
}
这里守卫在构造函数中加锁,在析构函数中解锁。
关于c++ - 在什么语言中有 "guard"关键字或概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2168365/