Apakah susunan pembina ahli dan panggilan pemusnah dalam C ?

Barbara Streisand
Lepaskan: 2024-11-08 03:33:02
asal
597 orang telah melayarinya

What is the order of member constructor and destructor calls in C  ?

Susunan Panggilan Pembina dan Pemusnah Ahli: Spesifikasi A C

Dalam C , susunan permulaan dan pemusnahan ahli kelas adalah penting untuk mengurus hayat objek dan peruntukan memori dengan cekap. Artikel ini memberi penerangan tentang spesifik proses ini, seperti yang ditakrifkan oleh standard bahasa C.

Pertimbangkan coretan kod berikut:

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

Apabila kod ini dilaksanakan, pembina dan pemusnah memanggil akan berlaku dalam susunan tertentu.

Perintah Permulaan Ahli:

Mengikut bahagian standard C 14 12.6.2:

  • Data statik ahli dimulakan dahulu, mengikut susunan pengisytiharan.
  • Ahli data bukan statik dimulakan seterusnya, juga dalam susunan pengisytiharan. Di sini, ahli a dimulakan dahulu, diikuti oleh b dan kemudian c.

Oleh itu, output yang dijangkakan untuk permulaan ahli ialah:

A::A
B::B
C::C
Salin selepas log masuk

Perintah Pemusnahan Ahli:

Turutan pemusnahan ahli ialah terbalik kepada pemula:

  • Ahli data bukan statik dimusnahkan dalam susunan terbalik perisytiharan.
  • Statik ahli data dimusnahkan terakhir.

Output yang dijangkakan untuk pemusnahan ahli ialah:

C::~
B::~
A::~
Salin selepas log masuk

Ini mengesahkan bahawa C menjamin susunan pembinaan dan pemusnahan ahli seperti yang dinyatakan dalam piawaian . Ahli dimulakan dalam susunan pengisytiharan dan dimusnahkan dalam susunan pengisytiharan terbalik, memastikan pengurusan memori dan kitaran hayat objek yang betul. Memahami peraturan ini adalah penting untuk menulis kod C yang cekap dan betul.

Atas ialah kandungan terperinci Apakah susunan pembina ahli dan panggilan pemusnah dalam 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