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

Apakah Susunan Permulaan Ahli Data Bukan Statik dalam Kelas C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 15:12:14448semak imbas

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

Tertib Permulaan Ahli Data Bukan Statik dalam C

Apabila mencipta contoh baharu kelas dengan ahli data bukan statik, tertib di mana ia dimulakan adalah penting untuk pembinaan objek yang betul.

Dalam senario ini, mari kita pertimbangkan perkara berikut kod:

class A {};
class B {};
class X
{
    A a;
    B b;
};

Persoalannya timbul: apabila pembina kelas X dipanggil, pembina (A atau B) yang manakah dipanggil dahulu? Adakah kedudukan mereka dalam definisi kelas menentukan susunan?

Menurut Piawaian C, seksyen 12.6.2, susunan permulaan adalah seperti berikut:

  • Pertama, kelas asas maya ialah dimulakan (tidak berkenaan dalam kes ini).
  • Kelas asas langsung dimulakan dalam susunan pengisytiharan (juga tidak berkenaan di sini).
  • Ahli data bukan statik dimulakan mengikut susunan yang muncul dalam definisi kelas.
  • Akhir sekali, badan pembina dilaksanakan.

Oleh itu, dalam kod yang disediakan, ahli data bukan statik a dan b dimulakan dalam susunan ia diisytiharkan, iaitu yang pertama diikuti dengan b. Pembina A akan dipanggil sebelum pembina B.

Ringkasnya, susunan pemula untuk ahli data bukan statik ditentukan oleh susunan pengisytiharan mereka dalam definisi kelas, bukan oleh penempatan mereka dalam pembina badan.

Atas ialah kandungan terperinci Apakah Susunan Permulaan Ahli Data Bukan Statik dalam Kelas 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