Permulaan Tatasusunan Objek Tanpa Pembina Lalai
Dalam C , apabila mencipta tatasusunan objek, pembina lalai dipanggil untuk memulakan setiap elemen. Walau bagaimanapun, dalam beberapa kes, anda mungkin menghadapi ralat semasa memulakan tatasusunan objek jika pembina lalai adalah peribadi atau tidak wujud.
Untuk mengatasinya, anda boleh menggunakan teknik penempatan-baru, yang mana menyediakan cara untuk memulakan objek in situ, tanpa menggunakan pembina lalai.
Begini cara anda boleh menggunakan penempatan-baru untuk memulakan tatasusunan objek tanpa pembina lalai:
class Car { private: int _no; public: Car(int no) : _no(no) {} }; int main() { void *raw_memory = operator new[](NUM_CARS * sizeof(Car)); Car *ptr = static_cast<Car *>(raw_memory); for (int i = 0; i < NUM_CARS; ++i) { new(&ptr[i]) Car(i); } // destruct in inverse order for (int i = NUM_CARS - 1; i >= 0; --i) { ptr[i].~Car(); } operator delete[](raw_memory); return 0; }
Dalam kod ini, raw_memory mewakili blok memori mentah yang digunakan untuk menyimpan susunan objek Kereta. Kami kemudian menghantarnya ke penuding Kereta * dan menggunakan penempatan-baharu untuk membina setiap objek di tempatnya, memulakannya dengan nombor yang ditentukan.
Apabila anda selesai dengan tatasusunan, ingat untuk memusnahkan objek secara terbalik perintah dan padam memori mentah yang diperuntukkan menggunakan penempatan-baru. Pendekatan ini membolehkan anda memulakan tatasusunan objek walaupun pembina lalainya tidak boleh diakses.
Atas ialah kandungan terperinci Bagaimana untuk Memulakan Susunan Objek dalam C Tanpa Pembina Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!