Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pembina dan Pemusnah Dipanggil dalam Warisan C?

Bagaimanakah Pembina dan Pemusnah Dipanggil dalam Warisan C?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 04:10:09385semak imbas

How are Constructors and Destructors Called in C   Inheritance?

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:

  1. Pembinaan Kelas Asas: Panggilan Pembina bermula dengan kelas asas. Dalam kes ini, pembina A dipanggil dahulu.
  2. Pembinaan Medan Ahli: Seterusnya, medan ahli dibina mengikut susunan ia diisytiharkan dalam kelas terbitan. Dalam kes ini, medan B jenis A dibina.
  3. Pembinaan Kelas Terbitan: Akhirnya, pembina kelas terbitan, B, dipanggil.

Panggilan Pemusnah:

Turutan panggilan pemusnah ialah terbalik susunan panggilan pembina:

  1. Pemusnah Kelas Terbitan: Pemusnah kelas terbitan, B, dipanggil dahulu.
  2. Medan Ahli Pemusnah: Seterusnya, pemusnah medan ahli a dipanggil, memusnahkan instancenya A.
  3. Pemusnah Kelas Asas: Akhirnya, pemusnah kelas asas, A, dipanggil.

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!

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