Objek Automatik: Dimusnahkan dalam susunan terbalik definisi, apabila skop yang disertakan menyimpulkan.
Bukan Tempatan Statik Objek: Dimusnahkan dalam susunan takrifan terbalik, selepas pelaksanaan utama (pembolehubah global, data ahli statik).
Objek Statik Tempatan: Dibina aliran kawalan kali pertama melepasi takrifannya, dan dimusnahkan dalam susunan terbalik selepas pelaksanaan utama (pembolehubah statik dalam fungsi).
Dimusnahkan dalam susunan takrifan terbalik, subobjek ahli pertama, kemudian subobjek kelas asas.
Dimusnahkan dalam tertib menurun. Jika pengecualian berlaku semasa pembinaan elemen n-th, elemen n-1 hingga 0 dimusnahkan terlebih dahulu.
Dibina apabila ungkapan prvalue jenis kelas dinilai. Dimusnahkan apabila ungkapan yang mengandungi melengkapkan penilaian. Jika pengecualian berlaku semasa penilaian, objek sementara dimusnahkan dengan betul.
Objek Dinamik: Diperuntukkan dengan Foo baharu dan dimusnahkan dengan padam p .
Susun Dinamik: Diperuntukkan dengan Foo[n] baharu dan dimusnahkan dengan padam[] p.
Dalam kedua-dua kes, cuba memusnahkan memori berbilang kali, mengakses selepas pemusnahan atau menggunakan mekanisme pemusnahan yang salah (cth., padam[] untuk objek tunggal ) mengakibatkan tingkah laku yang tidak ditentukan. Jika pengecualian berlaku semasa pembinaan, memori yang diperuntukkan secara dinamik dikeluarkan sebelum pengecualian itu disebarkan.
std::shared_ptr
Gelagat Pengecualian:
Pemusnah tidak boleh membuang pengecualian kerana ini boleh menamatkan program. Jika pengecualian berlaku semasa pemusnahan objek, ia disebarkan dan semua subobjek yang dimusnahkan sebelum ini dimusnahkan dengan betul. Walau bagaimanapun, jika pengecualian objek dinamik berlaku semasa pembinaan, memori dilepaskan sebelum pengecualian merambat dan pemusnah objek tidak dipanggil.
Atas ialah kandungan terperinci Bagaimanakah Objek Dimusnahkan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!