QScopeGuard 类
template <typename F> class QScopeGuard提供一种在作用域末尾调用函数的作用域保护器。 更多...
头文件 | #include <QScopeGuard> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
QScopeGuard(F &&f) | |
QScopeGuard(const F &f) | |
void | dismiss() |
相关非成员
QScopeGuard<typename std::decay<F>::type> | qScopeGuard(F &&f) |
详细描述
QScopeGuard<F> 是一个类,它的唯一目的是在其析构函数中运行函数 f。这对于确保您的清理代码是否执行、函数是否正常退出、由于返回语句提前退出或由于异常退出非常有用。
注意: 不支持异常。可调用项在执行、复制或移动时不应抛出。
另请参见:QScopedValueRollback。
成员函数文档
创建一个作用域保护器,在该作用域结束时执行 f。
如果 F 是一个 lambda,它的类型无法编写。在这种情况下,您可以通过依赖于类模板参数推导(C++17 特性)并完全不使用模板参数或使用辅助函数 qScopeGuard() 而不是此构造函数。
[noexcept]
void QScopeGuard::dismiss()
解除作用域保护器的武装,这样就不会在作用域结束时调用函数 F。
相关非成员
template <typename F> QScopeGuard<typename std::decay<F>::type> qScopeGuard(F &&f)
qScopeGuard 函数可用于在作用域结束时调用函数。
创建一个作用域保护器,在该作用域结束时执行 f。
此辅助函数提供,以便您无需指定可调用类型的模板参数即可轻松构建QScopeGuard。如果F是lambda函数,则无法编写其类型,因此需要依赖此辅助函数或类模板参数推导。
示例用法如下:
void myComplexCodeWithMultipleReturnPoints(int v) { // The lambda will be executed right before your function returns auto cleanup = qScopeGuard([] { code you want executed goes HERE; }); if (v == -1) return; int v2 = code_that_might_throw_exceptions(); if (v2 == -1) return; (...) }
© 2024 Qt公司。本文件中的文档贡献者是各自所有者的版权。本文件提供的文档根据免费软件基金会发布的GNU自由文档许可协议版本1.3许可。