您的位置:首页 > 编程语言 > C语言/C++

C++ CScopeGuard

2015-09-20 21:47 274 查看
class CScopeGuard
{
private:
bool m_Dismissed;
std::function<void()> m_pfOnExitScope;
private:
void * operator new(size_t) = delete;
CScopeGuard(CScopeGuard & sg) = delete;
CScopeGuard & operator=(CScopeGuard & sg) = delete;
CScopeGuard & operator=(std::function<void()> const & soe) = delete;
public:
/*explicit*/
inline APIENTRY CScopeGuard(std::function<void()> pfOnExitScope) noexcept : m_Dismissed(false), m_pfOnExitScope(pfOnExitScope)
{
}
inline APIENTRY ~CScopeGuard()
{
if (!m_Dismissed)
{
m_pfOnExitScope();
}
}
public:
inline void APIENTRY Dismiss(bool dismissed = true) noexcept
{
m_Dismissed = dismissed;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: