【发布时间】:2010-08-12 11:56:50
【问题描述】:
我最近刚刚了解了 Scope Guard C++ 习语。不幸的是,我找不到任何好的实现。
谁能给我指点 C++ 中一些好的和可用的 Scope Guard 实现?
谢谢,博达·赛多。
【问题讨论】:
-
以前从未听说过这个 - 其他人骗我,请参阅en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Scope_Guard。恕我直言,这似乎不太有用。而且实现起来很简单——你不需要“找到一个实现”。
-
@Neil:很有趣,因为它与我对 RAII 相关习语的期望大不相同。我确实想知道成功执行后谁来处理资源。
-
据我所知,智能指针只有
delete,但使用范围保护你也可以delete []或free或fclose()或close_my_object等。所以我认为它更好.如果我错了,请纠正我。 -
智能指针不必只调用
delete。见boost.org/doc/libs/1_43_0/libs/smart_ptr/…。虽然我个人认为 Scope Guard 对于close_my_object之类的情况更清晰。 -
我真的推荐Boost's Scope Exit,他们做得很好。