Tertib Panggilan Pembina dan Pemusnah dalam Warisan
Dalam pengaturcaraan berorientasikan objek dengan warisan, memahami susunan panggilan pembina dan pemusnah adalah penting . Ini menjadi sangat penting apabila berurusan dengan berbilang kelas asas dan komposisi objek.
Pertimbangkan hierarki kelas berikut:
struct A { A() { cout << "A() C-tor" << endl; } ~A() { cout << "~A() D-tor" << endl; } }; struct B : public A { B() { cout << "B() C-tor" << endl; } ~B() { cout << "~B() D-tor" << endl; } A a; };
Dalam fungsi utama:
int main() { B b; }
Di sini ialah peraturan yang mengawal susunan panggilan pembina dan pemusnah dalam warisan ini hierarki:
Panggilan Pembina:
Panggilan Pemusnah:
Turutan panggilan pemusnah ialah terbalik susunan panggilan pembina:
Senarai Permulaan Lalai:
Walaupun tanpa senarai permulaan yang ditakrifkan dengan jelas, medan ahli akan dimulakan sebelum kelas terbitan pembina dipanggil. Dalam kes ini, a akan dimulakan kepada pembina lalai A.
Oleh itu, output yang dijangkakan untuk kod dalam fungsi utama ialah:
A() C-tor A() C-tor B() C-tor ~B() D-tor ~A() D-tor ~A() D-tor
Atas ialah kandungan terperinci Bagaimanakah Pembina dan Pemusnah Dipanggil dalam Warisan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!