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!