Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah anda boleh memulakan pelbagai objek dalam pembina C?

Bagaimanakah anda boleh memulakan pelbagai objek dalam pembina C?

Susan Sarandon
Susan Sarandonasal
2024-11-06 19:08:02935semak imbas

How can you initialize an array of objects within a C   constructor?

Permulaan Pembina Tatasusunan C

Memulakan tatasusunan objek dalam C boleh menjadi mencabar, terutamanya jika dibandingkan dengan contoh bukan tatasusunan. Pertimbangkan pemula bukan tatasusunan berikut:

struct Foo { Foo(int x) { /* ... */  } };

struct Bar {
     Foo foo;

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

Dalam contoh ini, objek Foo dalam struct Bar dimulakan dengan betul menggunakan senarai pemula dalam pembina. Walau bagaimanapun, memulakan tatasusunan objek memerlukan pendekatan yang berbeza.

struct Foo { Foo(int x) { /* ... */  } };

struct Baz { 
     Foo foo[3];

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

Sintaks yang salah yang ditunjukkan dalam contoh di atas menyerlahkan cabaran untuk memulakan elemen tatasusunan secara individu.

Penyelesaian

Malangnya, menurut jawapan yang disediakan, tiada cara standard untuk memulakan tatasusunan objek dalam C dalam pembina. Sebaliknya, pembina lalai mesti digunakan untuk ahli tatasusunan dan sebarang permulaan yang diperlukan boleh dilakukan selepas masa pembinaan.

Penghadan ini dikaitkan dengan kekangan pemproses terbenam yang digunakan, yang tidak mempunyai sokongan untuk C moden piawaian. Sebagai penyelesaian, pengarang mencadangkan mencipta pembina lalai dan kaedah init() eksplisit untuk melaksanakan pemulaan selepas pembinaan. Walaupun pendekatan ini mungkin tidak sesuai, ia mengatasi kekurangan pemula pembina untuk tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah anda boleh memulakan pelbagai objek dalam pembina 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