有时我想确保在从另一个函数返回之前执行了一些函数调用,或者一个整数被递减。
例如考虑这段代码:
void doSomething()
{
try
{
.....
.....
return;
.....
.....
.....
return;
......
} catch ( ... )
}
myvariable--;
}
我想确保 myvariable 始终递减,无论是否存在异常或返回调用。 在 C++ 中是否有任何内置对象用于此目的,或者我应该创建自己的类来接受 std::function 并在对象超出对象析构函数的范围时执行它?
例如,在 C# 中有 try..catch...finally block ,您可以在 finally 中放置任何要在函数返回之前执行的代码。
最佳答案
您可以编写自己的类,在其析构函数中执行某些操作。
class DoAction
{
public:
DoAction (std::function<void ()> func) : m_func (func)
{
}
~DoAction ()
{
m_func ();
}
private:
std::function<void ()> m_func;
};
然后,通过以下方式创建它的对象:
DoAction action([&] {/*Code that you want to be executed upon leaving the scope.*/});
关于c++ - 当对象超出范围时执行一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41706284/