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
Lepaskan: 2024-12-03 02:34:10
asal
434 orang telah melayarinya

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

Dan yang berikut kod dalam utama:

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

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!

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