Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah pembina ahli dan pemusnah dipanggil dalam warisan dan pengagregatan C?

Bagaimanakah pembina ahli dan pemusnah dipanggil dalam warisan dan pengagregatan C?

Barbara Streisand
Barbara Streisandasal
2024-11-08 08:02:01244semak imbas

How are member constructors and destructors called in C   inheritance and aggregation?

Tertib Panggilan Pembina dan Pemusnah Ahli

Dalam C , susunan pembina ahli dan panggilan pemusnah ialah aspek asas pemulaan objek dan kemusnahan. Ia memastikan permulaan dan pembersihan ahli kelas yang betul, terutamanya dalam situasi yang melibatkan pewarisan dan pengagregatan.

Pertimbangkan program berikut:

#include <iostream>
using namespace std;

struct A {
    A() { cout << "A::A" << endl; }
    ~A() { cout << "A::~" << endl; }
};

struct B {
    B() { cout << "B::B" << endl; }
    ~B() { cout << "B::~" << endl; }
};

struct C {
    C() { cout << "C::C" << endl; }
    ~C() { cout << "C::~" << endl; }
};

struct Aggregate {
    A a;
    B b;
    C c;
};

int main() {
    Aggregate a;
    return 0;
}

Apabila dilaksanakan, program ini menghasilkan output berikut:

A::A
B::B
C::C
C::~
B::~
A::~

Output ini menunjukkan bahawa pembina ahli dipanggil mengikut susunan pengisytiharan, dan pemusnah ahli dipanggil dalam susunan terbalik pengisytiharan.

Piawaian C menjamin pesanan ini di bawah syarat berikut:

  1. Perintah Permulaan: Kelas asas langsung dan ahli data bukan statik dimulakan mengikut susunan yang muncul dalam definisi kelas.
  2. Kemusnahan Tertib: Pemusnah untuk kelas terbitan dan asas dipanggil dalam tertib terbalik tertib permulaan.

Dalam contoh ini, kelas Agregat mengandungi ahli a jenis A, b jenis B, dan c jenis C. Apabila pembina Agregat dipanggil, ahli dimulakan dalam susunan a, b, dan c. Sejajar dengan itu, apabila pemusnah Agregat dipanggil, ahli dimusnahkan dalam susunan terbalik, c, b, dan a.

Memahami susunan pembina ahli dan panggilan pemusnah adalah penting untuk pengurusan seumur hidup objek yang betul dalam C , terutamanya apabila bekerja dengan warisan dan struktur kelas yang kompleks.

Atas ialah kandungan terperinci Bagaimanakah pembina ahli dan pemusnah dipanggil dalam warisan dan pengagregatan 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