Memanggil Pemusnah Secara Manual: Bila dan Bila Tidak
Kebijaksanaan biasa dalam kejuruteraan perisian ialah memanggil pemusnah secara manual untuk objek adalah petunjuk yang lemah reka bentuk. Walau bagaimanapun, dalam keadaan tertentu, mungkin perlu atau malah berfaedah untuk menggunakan pemusnahan secara eksplisit.
Invokasi Manual Waran Situasi
Sebab utama untuk memanggil pemusnah secara manual adalah untuk melepaskan ingatan tanpa memusnahkan objek asas itu sendiri. Senario ini sering timbul apabila peruntukan memori dan deallocation dikendalikan secara bebas daripada pembinaan dan pemusnahan objek. Contohnya, dalam kod di mana:
char buffer[sizeof(MyClass)]; { MyClass* p = new(buffer)MyClass; p->dosomething(); p->~MyClass(); }
Dalam kod ini, objek MyClass dibina menggunakan peletakan baharu pada penimbal memori sedia ada. Untuk melepaskan objek, pemusnahnya mesti dipanggil secara eksplisit, kerana memori yang diperuntukkan untuk penimbal kekal.
Kes Lain
Selain daripada senario yang disebutkan di atas, doa pemusnah manual mungkin juga bermanfaat dalam kes di mana:
Bila Perlu Mengelakkan Doa Pemusnah Manual
Semasa memanggil pemusnah secara manual boleh berguna dalam situasi tertentu, ia tidak sepatutnya menjadi amalan sembarangan di seluruh pangkalan kod. Umumnya disyorkan untuk menggunakan simpulan bahasa pemerolehan sumber ialah pemula (RAII), yang secara automatik mengendalikan pemulaan dan pemusnahan objek untuk memastikan pengurusan sumber yang betul.
Atas ialah kandungan terperinci Bilakah Memanggil Pemusnah Secara Manual Boleh Diterima dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!