资源有很多种,每种都封装一套,还是挺繁琐的!对于比较少使用或者一个程序很可能只会用一次的资源,我们不想封装,在这种情况下用Boost.ScopeExit。
库 Boost.ScopeExit 使得在没有资源特定类的情况下使用 RAII 成为可能。
BOOST_SCOPE_EXIT- #include <boost/scope_exit.hpp>
- #include <iostream>
-
- int *foo()
- {
- int *i = new int{10};
- BOOST_SCOPE_EXIT(&i)
- {
- delete i;
- i = 0;
- } BOOST_SCOPE_EXIT_END
- std::cout << *i << '\n';
- return i;
- }
-
- int main()
- {
- int *j = foo();
- std::cout << j << '\n';
- }
计算结果: