Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Menggunakan Pemula Pembina untuk Ahli Array dalam C?

Bolehkah Anda Menggunakan Pemula Pembina untuk Ahli Array dalam C?

Barbara Streisand
Barbara Streisandasal
2024-11-07 08:33:02114semak imbas

Can You Use Constructor Initializers for Array Members in C  ?

Pemula Pembina untuk Ahli Tatasusunan dalam C

Apabila bekerja dengan tatasusunan objek dalam C, memulakannya dengan betul boleh menjadi tugas yang mencabar. Artikel ini meneroka had dan penyelesaian untuk menggunakan pemula pembina untuk ahli tatasusunan.

Permulaan Bukan Tatasusunan

Dalam contoh bukan tatasusunan, Bar struct boleh memulakannya ahli foo menggunakan pemula pembina:

struct Bar {
    Foo foo;

    Bar() : foo(4) {}
};

Permulaan Tatasusunan

Walau bagaimanapun, dalam contoh tatasusunan, struct Baz tidak boleh memulakan ahli tatasusunannya foo menggunakan sintaks yang sama :

struct Baz {
    Foo foo[3];

    // Incorrect
    Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};

Keterbatasan

Dalam C , tatasusunan kekurangan sokongan pembina. Akibatnya, ahli tatasusunan dimulakan secara lalai sebelum sebarang permulaan objek berlaku. Oleh itu, adalah tidak mungkin untuk memulakan ahli tatasusunan secara langsung menggunakan pemula pembina.

Penyelesaian

Penyelesaian yang disediakan dalam soalan ialah menggunakan penyelesaian. Memandangkan konstruk STL seperti std::vector tidak tersedia, pembina lalai dicipta dengan kaedah init() eksplisit untuk permulaan pasca pembinaan. Ini mengelakkan keperluan untuk pemula pembina sama sekali.

Penyelesaian Alternatif

Respons Barry mencadangkan pendekatan yang lebih terkini. Jika persekitaran pembangunan menyokong piawaian C melebihi C 98, sintaks yang lebih baharu tersedia:

struct Baz {
    Foo foo[3]{4, 5, 6};
};

Sintaks ini membenarkan pengamulaan ahli tatasusunan menggunakan pendakap kerinting, menghapuskan keperluan untuk pembina lalai dan kaedah pengamulaan eksplisit.

Atas ialah kandungan terperinci Bolehkah Anda Menggunakan Pemula Pembina untuk Ahli Array 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