![]() |
1
19
当然。相关主题是 RAII paradigm .
您不处理异常。
亚历山德里斯库想出了
ScopeGuard
很久以前了。Boost和Boost
|
![]() |
2
17
据记载,有 Boost ScopeExit . |
![]() |
3
9
范围警卫绝对是个好主意。我认为范围保护概念是实现异常安全的有效工具。如果你能做一个更安全更干净的版本 ScopeExit 使用C++ 0x语法,我认为这很值得你花时间。 类似于亚历山德里斯科的 ScopeGuard 还有Boost的Scopeexit, D programming language 对于这类事情有直接的语法。D编程团队认为Scope Guard是一个很好的主意,他们添加了它 directly to the language (即它没有在库中实现)。 例子。
基于范围的守卫并不是什么新鲜事。它的功能可以很容易地用类析构函数(raii等)复制。也可以用
当你有多个
|
![]() |
4
5
如果用二元运算符替换create_scope_exit,我们可以删除括号:
用途:
UPD:
|
![]() |
5
0
使用
|
![]() |
6
0
我们可以通过将丑陋的东西定义为:
然后:
使用MSVC++11.0(VS2012)进行测试。当做。 |
![]() |
7
0
这是个好主意,但是你的课有几个问题。
注意,如果实现第2点,则需要为实例化的每个scopeguard指定一个有意义的名称。一般来说,这不是问题,但它可能在您的应用程序中(或者您的口味上)。 最后,这个问题可能更适合 CodeReview . |
![]() |
8
0
使用Booost:
用途:
|
![]() |
9
-1
我的0.02美元
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 6 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |