Apabila Meninggalkan Pendakap Luar dalam Senarai Pemula
Dalam C , apabila memulakan jenis agregat seperti struct atau tatasusunan, anda mungkin menghadapi persoalan sama ada hendak menggunakan pendakap luar dalam senarai pemula. Dalam kes jenis agregat yang POD (Data Lama Biasa) dan tidak mempunyai pembina yang ditentukan pengguna, seperti std::array, pendakap luar diperlukan. Walau bagaimanapun, bagi agregat yang tidak mempunyai sekatan ini, seperti jenis terbina dalam, pendakap ini boleh ditinggalkan.
Pendakap Eksplisit untuk Agregat POD
std::array<A, 2> a1 = { {0, 0.1}, {2, 3.4} };
pengkompil melaporkan "terlalu banyak pemula" kerana pendakap dalam tiada. Inisialisasi yang betul dengan pendakap ialah:
std::array<A, 2> a1 = { {{ {0, 0.1}, {2, 3.4} }} };
Eliding Braces untuk Agregat Bukan POD
Berbeza dengan agregat POD, agregat bukan POD seperti jenis terbina dalam tidak memerlukan pendakap luar eksplisit dalam senarai pemula. Contohnya, contoh anda:
std::array<double, 2> a2 = {0.1, 2.3};
tidak termasuk pendakap untuk tatasusunan dalam. Ini kerana double bukan agregat, dan senarai pemula secara langsung memulakan elemen berganda konstituen.
Cerapan Tambahan daripada Standard
Piawaian C menyediakan panduan tentang bila pendakap luar boleh ditinggalkan dalam senarai pemula:
Ini membolehkan permulaan dengan kedua-dua pendakap dan tanpa pendakap, selagi bilangan klausa pengamula sepadan dengan bilangan ahli yang akan dimulakan.
Atas ialah kandungan terperinci Bila untuk Mengetepikan Pendakap Luar dalam Senarai Pemula C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!