Rumah > pembangunan bahagian belakang > C++ > Apakah Susunan Permulaan Ahli Data Bukan Statik dalam C ?

Apakah Susunan Permulaan Ahli Data Bukan Statik dalam C ?

Barbara Streisand
Lepaskan: 2024-12-21 10:51:16
asal
838 orang telah melayarinya

What's the Initialization Order of Non-Static Data Members in C  ?

Tertib Permulaan Ahli Data Bukan Statik

Dalam senario ini, kami mempunyai dua ahli data bukan statik, a dan b, diisytiharkan dalam kelas X. Soalan biasa timbul: dalam susunan apakah ahli data ini dimulakan apabila pembina untuk X adalah digunakan?

Untuk menjawab soalan ini, kita beralih ke bahagian 12.6.2 Piawaian C, yang menggariskan susunan permulaan ahli kelas:

5 Initialization shall proceed in the following order:
-- First, and only for the constructor of the most derived class as described below, virtual base classes shall be initialized in the order they appear on a depth-first left-to-right traversal of the directed acyclic graph of base classes...
-- Then, direct base classes shall be initialized in declaration order as they appear in the base-specifier-list...
-- Then, nonstatic data members shall be initialized in the order they were declared in the class definition...
-- Finally, the body of the constructor is executed...
Salin selepas log masuk

Berdasarkan peraturan ini, susunan permulaan a dan b ditentukan semata-mata oleh penempatannya dalam definisi kelas. Memandangkan a mendahului b, ia akan dimulakan terlebih dahulu. Ini berlaku tanpa mengira sebarang susunan permulaan ahli yang dinyatakan secara eksplisit dalam badan pembina.

Oleh itu, dalam kes ini, pembina A akan dipanggil sebelum pembina B apabila pembina X digunakan.

Atas ialah kandungan terperinci Apakah Susunan Permulaan Ahli Data Bukan Statik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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