如果我没记错的话,有一个类的 boost 实现,您可以在其中指定一个函数,当对象被销毁时它将调用它。
// it's actually a template if iirc
class Blue
{
public:
Blue(std::function<void()> f) : func(f) { }
~Blue() { func(); }
private:
std::function<void()> func;
};
// Implementation:
class Foo
{
public:
Blue Bar()
{
/* ... */
return Blue(std::bind(&Mag, this));
}
private:
void Mag() { /* ... */ }
};
int main()
{
Foo foo;
// ...
{
foo.Bar();
// ...
// Guaranteed Mag() will be called
}
// ...
}
我忘记了 boost 的实现被称为什么,想知道是否有人可以帮助我识别它?