有时我想确保在从另一个函数返回之前执行了某个函数调用,或者一个整数被递减。
例如考虑这个代码:
void doSomething()
{
try
{
.....
.....
return;
.....
.....
.....
return;
......
} catch ( ... )
}
myvariable--;
}
Run Code Online (Sandbox Code Playgroud)
我想确保 myvariable 总是递减,无论是否有异常或返回调用。在 C++ 中是否有任何内置对象,或者我应该创建自己的类来接受 std::function 并在对象超出对象析构函数的范围时执行它?
例如,在 C# 中有 try..catch...finally 块,在 finally 块中,您可以在从函数返回之前放置您想要执行的任何代码。
您可以在其析构函数中编写自己的类来执行某些操作。
class DoAction
{
public:
DoAction (std::function<void ()> func) : m_func (func)
{
}
~DoAction ()
{
m_func ();
}
private:
std::function<void ()> m_func;
};
Run Code Online (Sandbox Code Playgroud)
然后,通过以下方式创建它的对象:
DoAction action([&] {/*Code that you want to be executed upon leaving the scope.*/});
Run Code Online (Sandbox Code Playgroud)
现场演示。
| 归档时间: |
|
| 查看次数: |
2139 次 |
| 最近记录: |