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

Apakah Urutan Panggilan Pembina dan Pemusnah dalam Warisan C?

Mary-Kate Olsen
Lepaskan: 2025-01-05 20:15:43
asal
963 orang telah melayarinya

What's the Order of Constructor and Destructor Calls in C   Inheritance?

Susunan Panggilan Pembina dan Pemusnah dalam Warisan

Apabila mentakrifkan kelas yang diwarisi, adalah penting untuk memahami urutan di mana pembina dan pemusnah digunakan . Pertimbangkan contoh 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

Tertib Pembinaan:

  1. Pembina Kelas Asas: Pembina kelas asas (A ) memulakan bahagian asas objek terbitan.
  2. Medan Ahli Pembinaan: Memandangkan B mempunyai medan jenis A, pembinanya akan memanggil pembina untuk medan ini.
  3. Pembina Kelas Terbitan: Akhir sekali, pembina kelas terbitan (B ) melengkapkan pemulaan objek.

Oleh itu, susunan pembinaan ialah:

  • A()
  • A(a)
  • B()

Arahan Pemusnahan:

Pemusnah dipanggil dalam susunan terbalik pembinaan:

  1. Pemusnah Kelas Terbitan: Pemusnah kelas terbitan (B) memulakan proses pembersihan.
  2. Pemusnahan Medan Ahli: Medan jenis A (a) dimusnahkan.
  3. Kelas Asas Pemusnah: Akhir sekali, pemusnah kelas asas (A) melengkapkan pemusnahan.

Perintah pemusnahan ialah:

  • ~B()
  • ~A(a)
  • ~A()

Senarai Pemula :

Walaupun tiada senarai pemula eksplisit ditakrifkan dalam B, senarai permulaan lalai secara automatik dihasilkan oleh pengkompil. Senarai ini memulakan kelas asas (A) dan medan ahli (a) menggunakan pembina lalainya.

Kesimpulannya, susunan panggilan pembina dan pemusnah dalam warisan mengikut peraturan tertentu: pembina memulakan kelas asas dahulu, kemudian medan ahli, dan akhirnya kelas terbitan. Pemusnah menggunakan proses pembersihan dalam susunan terbalik. Memahami peraturan ini adalah penting untuk menulis kod yang mantap apabila menggunakan warisan.

Atas ialah kandungan terperinci Apakah Urutan Panggilan Pembina dan Pemusnah 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