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
Susan Sarandonasal
2024-12-06 16:14:23376semak imbas

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:
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