Rumah >pembangunan bahagian belakang >C++ >C Hantaran: Bilakah Saya Harus Menggunakan `reinterpret_cast` lwn. `static_cast` untuk Penukaran batal*?
Apabila bekerja dengan C casting, adalah penting untuk memahami perbezaan antara reinterpret_cast dan static_cast.
reinterpret_cast: Berkenaan apabila:
Dalam senario anda, di mana C dipanggil dari C dan objek C mesti disimpan dalam C void* , pelakon yang sesuai ialah:
C++Class* myClass = static_cast<C++Class*>(voidPointer);
Mengapa static_cast?
Mengikut piawaian C, static_casting penunjuk ke dan dari void* mengekalkan alamat. Ini memastikan bahawa selepas menghantar dan menukar semula, alamat asal dikekalkan.
reinterpret_cast memberikan jaminan yang kurang selamat. Jika anda mentafsir semula_cast kepada jenis penunjuk yang berbeza dan kemudian kembali, nilai asal dijamin. Walau bagaimanapun, nilai penuding void* perantaraan tidak dinyatakan, menjadikan reinterpret_cast kurang sesuai untuk kes penggunaan ini.
Oleh itu, untuk menghantar ke dan dari void*, static_cast ialah pilihan pilihan.
Atas ialah kandungan terperinci C Hantaran: Bilakah Saya Harus Menggunakan `reinterpret_cast` lwn. `static_cast` untuk Penukaran batal*?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!