Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kami Boleh Mencipta ScopeGuard C 11 yang Paling Mudah dan Teguh?
Apakah C 11 ScopeGuard yang paling ringkas dan kemas?
Masalah:
Pemaju berusaha untuk memudahkan ScopeGuard, teknik yang digunakan untuk mengendalikan pemerolehan dan pelepasan sumber dalam C . Mereka menyasarkan versi dengan baris kod yang minimum sambil menangani kemungkinan kebimbangan.
Jawapan:
ScopeGuard yang direka bentuk ringkas dalam C 11:
<code class="cpp">class scope_guard { public: template<class Callable> scope_guard(Callable &&undo_func) try : f(std::forward<Callable>(undo_func)) { } catch(...) { undo_func(); throw; } // ... (additional implementation omitted for brevity) };</code>
Ciri Utama:
Evolusi ScopeGuard:
ScopeGuard yang disediakan telah melalui penambahbaikan dari semasa ke semasa, menggabungkan penambahbaikan seperti :
Penggunaan:
<code class="cpp">scope_guard scope_exit, scope_fail(scope_guard::execution::exception); // Acquire/release resources scope_exit += [](){ cleanup1(); }; scope_fail += [](){ rollback1(); };</code>
Faedah:
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mencipta ScopeGuard C 11 yang Paling Mudah dan Teguh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!