Rumah >pembangunan bahagian belakang >C++ >Apakah Perintah Panggilan Tepat Pembina dan Pemusnah dalam Warisan?

Apakah Perintah Panggilan Tepat Pembina dan Pemusnah dalam Warisan?

Linda Hamilton
Linda Hamiltonasal
2024-12-03 02:34:10396semak imbas

What's the Exact Call Order of Constructors and Destructors in Inheritance?

Memahami Susunan Panggilan Pembina dan Pemusnah dalam Warisan

Dalam pengaturcaraan berorientasikan objek, kelas boleh mewarisi daripada kelas asas, mewujudkan hubungan hierarki di mana kelas terbitan mewarisi sifat dan tingkah laku kelas induk. Apabila mencipta dan memusnahkan objek kelas ini, susunan panggilan pembina dan pemusnah memainkan peranan penting dalam memulakan dan memuktamadkan objek.

Untuk contoh yang diberikan:

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;  // Field of type A in class B
};

Dan yang berikut kod dalam utama:

int main() {
    B b;
}

Pembinaan Pesanan

  1. Pembinaan Kelas Asas: Proses pembinaan sentiasa bermula dengan pembina kelas asas. Dalam kes ini, A ialah kelas asas, jadi pembinanya A() dipanggil dahulu.
  2. Pembinaan Medan Ahli: Selepas kelas asas dibina, medan ahli dimulakan dalam perintah mereka diisytiharkan. Di sini, B mempunyai medan a jenis A. Memandangkan tiada senarai pemula yang ditakrifkan secara eksplisit, pemula lalai digunakan, yang hanya memanggil pembina untuk a.
  3. Pembinaan Kelas Terbitan: Setelah medan ahli dimulakan, pembina kelas terbitan boleh dipanggil. Dalam kes ini, B() dipanggil.

Perintah Pemusnahan

Turutan panggilan pemusnah adalah betul-betul terbalik tertib pembinaan:

  1. Pemusnahan Kelas Terbitan: Pertama, pemusnah kelas terbitan ~B() ialah dipanggil.
  2. Pemusnahan Medan Ahli: Seterusnya, medan ahli dimusnahkan mengikut susunan terbalik pengisytiharannya. Medan a jenis A akan dimusnahkan.
  3. Kemusnahan Kelas Asas: Akhirnya, pemusnah kelas asas ~A() dipanggil.

Tanpa mengira sama ada senarai pemula digunakan atau tidak, perintah panggilan untuk pembinaan dan pemusnahan akan mengikut prinsip ini, memastikan permulaan yang betul dan pembersihan objek dalam hierarki warisan.

Atas ialah kandungan terperinci Apakah Perintah Panggilan Tepat Pembina dan Pemusnah dalam Warisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn