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

Bagaimanakah Pembina dan Pemusnah Dipanggil dalam Warisan C?

Patricia Arquette
Lepaskan: 2024-11-29 04:10:09
asal
296 orang telah melayarinya

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;
};
Salin selepas log masuk

Dalam fungsi utama:

int main() {
    B b;
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan