Rumah >pembangunan bahagian belakang >C++ >Dalam C , Bagaimanakah Ahli Kelas Dimulakan dan Dimusnahkan?

Dalam C , Bagaimanakah Ahli Kelas Dimulakan dan Dimusnahkan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-08 10:02:02188semak imbas

In C  , How are Class Members Initialized and Destroyed?

Tertib Permulaan dan Pemusnahan Ahli Kelas

Dalam C , susunan permulaan dan pemusnahan ahli kelas memainkan peranan penting dalam pengurusan seumur hidup objek. Tingkah laku ini biasanya dirujuk sebagai "perintah panggilan pembina dan pemusnah."

Perintah Permulaan Ahli

Piawaian C menentukan bahawa pembolehubah ahli dimulakan dalam susunan ia diisytiharkan dalam definisi kelas. Tertib ini memastikan kelas asas dimulakan sebelum kelas terbitan dan ahli data bukan statik dimulakan mengikut susunan yang dipaparkan.

Perintah Pemusnahan Ahli

Tertib terbalik terpakai kepada pemusnahan ahli. Pemusnah dipanggil dalam susunan terbalik permulaan, dengan pemusnah kelas terbitan dipanggil sebelum pemusnah kelas asas dan pemusnah ahli data bukan statik dipanggil dalam susunan terbalik perisytiharan mereka.

Contoh

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::~

Seperti yang dijangka, ahli Agregat dimulakan dalam susunan A , B, kemudian C, dan pemusnahnya dipanggil dalam susunan terbalik.

Oleh itu, ya, C menjamin bahawa ahli dimulakan dalam susunan pengisytiharan dan dimusnahkan dalam susunan terbalik untuk kedua-dua ahli kelas dan jenis agregat.

Atas ialah kandungan terperinci Dalam C , Bagaimanakah Ahli Kelas Dimulakan dan Dimusnahkan?. 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