Apabila Daya Konstruktif dan Pemusnah Bertumpu dalam Pengaturcaraan Berorientasikan Objek: Kajian Kes dalam Warisan Kelas
Apabila mencipta objek dalam hierarki warisan, a persoalan asas timbul mengenai susunan pembina dan pemusnah digunakan. Siasatan ini tertumpu pada gelagat kedua-dua kelas asas dan terbitan, serta kesan medan ahli dalam kelas tersebut. Untuk merungkai enigma ini, mari kita menyelidiki contoh ilustrasi.
Pertimbangkan coretan kod C berikut:
struct A { A() { std::cout << "A() C-tor" << std::endl; } ~A() { std::cout << "~A() D-tor" << std::endl; } }; struct B : public A { B() { std::cout << "B() C-tor" << std::endl; } ~B() { std::cout << "~B() D-tor" << std::endl; } A a; };
Di sini, kita mempunyai dua kelas, A dan B, tempat B mewarisi daripada A. Dalam kelas B, medan ahli a jenis A juga ditakrifkan. Apabila membuat contoh kelas B, susunan panggilan pembina dan panggilan pemusnah menjadi satu perkara yang menarik.
Mekanik Pembinaan
Semasa kod dilaksanakan, pembinaan sesuatu objek bermula dengan kelas asasnya. Dalam kes ini, kelas A ialah kelas asas untuk B, jadi pembina A() akan digunakan terlebih dahulu. Berikutan ini, medan ahli kelas terbitan dibina. Memandangkan kelas B mempunyai medan ahli a jenis A, pembina A() akan digunakan semula semasa peringkat ini. Akhirnya, pembina untuk kelas terbitan, B(), dipanggil, menandakan siapnya pembinaan objek.
Menurun ke Kemusnahan
Apabila kitaran hayat objek datang ke penghujungnya, susunan panggilan pemusnah mengikut corak songsang. Medan ahli dimusnahkan terlebih dahulu, meneruskan dalam susunan terbalik pengisytiharannya. Dalam contoh kami, medan ahli kelas B a (contoh kelas A) akan mempunyai pemusnahnya, ~A(), dipanggil. Ini diikuti dengan pemusnahan kelas terbitan itu sendiri, mencetuskan seruan ~B(). Akhir sekali, pemusnah kelas asas, ~A(), dipanggil.
Tanpa mengira Senarai Permulaan
Perlu diperhatikan bahawa susunan pembina dan pemusnah memanggil kekal tidak terjejas oleh kehadiran atau ketiadaan senarai pemula. Dalam coretan kod yang disediakan, tiada senarai pemula, tetapi susunan seruan yang diterangkan di atas masih berlaku. Corak yang konsisten ini memastikan aliran pembinaan dan pemusnahan yang boleh diramal merentas pelbagai senario pewarisan.
Atas ialah kandungan terperinci Dalam Warisan C, Apakah Susunan Panggilan Pembina dan Pemusnah dalam Kelas Asas dan Terbitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!