Rumah > pembangunan bahagian belakang > C++ > Bilakah Peletakan-Baharu Mesti Digunakan dengan `reinterpret_cast` untuk Mencipta Objek Boleh Bina Lalai Yang Trivial?

Bilakah Peletakan-Baharu Mesti Digunakan dengan `reinterpret_cast` untuk Mencipta Objek Boleh Bina Lalai Yang Trivial?

Susan Sarandon
Lepaskan: 2024-12-06 16:14:23
asal
415 orang telah melayarinya

When Must Placement-New Be Used with `reinterpret_cast` to Create Trivially Default-Constructible Objects?

Reinterpret_cast dan Penciptaan Objek Boleh Bina Risalah Yang Trivially

cppreference digunakan untuk mendakwa bahawa reinterpret_cast boleh digunakan untuk mencipta objek boleh bina lalai yang remeh pada storan sejajar yang sesuai. Walau bagaimanapun, tuntutan ini telah diperbetulkan untuk menyatakan bahawa penempatan-baharu diperlukan dalam kes sedemikian untuk memperkenalkan objek secara rasmi dan mengelakkan tingkah laku yang tidak ditentukan.

Bila Masa Hayat Objek Bermula?

Memandangkan pembetulan ini, adalah jelas bahawa tiada objek X wujud dalam kod yang disediakan. Oleh itu, sebarang percubaan untuk mengakses ahlinya (cth., reinterpret_cast>(buffer)->x = 42;) mengakibatkan tingkah laku yang tidak ditentukan.

Peranan alignas()

Penentukan alignas() memastikan storan dijajarkan sesuai untuk disimpan X. Ia tidak mencipta objek X. Jika terdapat cawangan antara perisytiharan alignas() dan reinterpret_cast, ia tidak akan mengubah fakta bahawa tiada objek X wujud.

Perubahan dalam Piawaian C

Tafsiran tingkah laku ini kekal tekal antara C 11 dan C 1z. Konsep mencipta objek tanpa pembinaan eksplisit melalui reinterpret_cast tidak disokong dalam mana-mana standard.

Atas ialah kandungan terperinci Bilakah Peletakan-Baharu Mesti Digunakan dengan `reinterpret_cast` untuk Mencipta Objek Boleh Bina Lalai Yang Trivial?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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