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
Barbara Streisandasal
2024-12-21 10:51:16728semak imbas

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...

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