|
|
1
16
哨兵的目标是一个模式,但我不确定下面哪一个(也许全部)。 当一个对象(可能是用户定义的类)被破坏时,即当它的析构函数被调用时,C++程序常常严重依赖于知识。对于使用垃圾收集的语言来说,情况并非如此。 例如,此技术用于采用“资源获取即初始化”范式:当调用对象构造函数时获取资源,编译器自动调用其析构函数以释放正常和异常(异常)情况下的资源(检查 this question ) 您可以利用构造/破坏时间知识的常见地方有
在STL中有一个类叫做
但事实上,上述任何一个类的对象
更多的哨兵目标例子 RAII question .
您可以看到与面向方面编程的关系;这些对象类似于“方面”,其切点“在封闭块的开始/结束处”、“在包含对象的构造/销毁处”等,但这些“方面”
不得不
存在于他们所期望的代码中。所以和原来的相比,它们没有那么“完美”
|
|
|
2
3
与AOP不同的是,它必须完成 合作地 通过将哨兵显式地放在函数体或类定义的某个地方。 如果不修改目标函数或类,则无法捕获调用。 |
|
|
3
2
Here 是Sentry类的一个示例,它将变量重置为其旧值。 |
|
|
Malvineous · 定义编译时间常数的最佳方法 11 年前 |
|
|
Søren Debois · 执行类型单元表达式的习语iff条件为真 12 年前 |
|
the wolf · 确保矩阵元素长度的“Python”方法 13 年前 |