Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memulakan Susunan Objek dalam C Tanpa Pembina Lalai?

Bagaimana untuk Memulakan Susunan Objek dalam C Tanpa Pembina Lalai?

Susan Sarandon
Lepaskan: 2024-12-22 11:02:10
asal
797 orang telah melayarinya

How to Initialize an Object Array in C   Without a Default Constructor?

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(&amp;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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan