Rumah >pembangunan bahagian belakang >C++ >Bolehkah std::shared_ptr digunakan untuk pembersihan yang boleh dipercayai semasa penutupan?
std::shared_ptr
std::shared_ptr, yang diperkenalkan dalam C 11, disediakan satu cara untuk mengurus objek yang diperuntukkan secara dinamik dengan pemilikan bersama. Walau bagaimanapun, kes penggunaan yang menarik muncul menggunakan std::shared_ptr
Contoh Berfungsi
Pertimbangkan coretan kod berikut:
<code class="cpp">#include <memory> #include <vector> class Test { public: Test() { std::cout << "Test created" << std::endl; } ~Test() { std::cout << "Test destroyed" << std::endl; } }; int main() { std::vector<std::shared_ptr<void>> v; { v.push_back(std::shared_ptr<Test>(new Test())); } return 0; }</code>
Anehnya, kod ini mengeluarkan:
Test created Test destroyed
Ini menunjukkan bahawa objek Ujian dimusnahkan dengan betul walaupun ia dipegang oleh std::shared_ptr
Mekanisme Dasar
std::shared_ptr menyediakan pemadaman jenis, memisahkan jenis objek terurus daripada pelaksanaan. Secara dalaman, ia menyimpan fungsi pemadam yang memanggil pemusnah yang sesuai berdasarkan jenis objek asal.
Apabila std::shared_ptr
Pematuhan dan Kebolehpercayaan Standard
Walaupun tingkah laku yang diterangkan pada masa ini berfungsi, ia bergantung pada butiran pelaksanaan dan tidak dijamin oleh piawaian C. Ini disebabkan oleh dua sebab:
Oleh itu, penggunaan std::shared_ptr
Atas ialah kandungan terperinci Bolehkah std::shared_ptr digunakan untuk pembersihan yang boleh dipercayai semasa penutupan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!