Rumah >pembangunan bahagian belakang >C++ >Bilakah `reinterpret_cast` Pilihan yang Diperlukan untuk Penukaran Jenis dalam C?
Bilakah reinterpret_cast Diperlukan?
Memahami perbezaan antara reinterpret_cast dan static_cast boleh menjadi mencabar. Umumnya, hantaran statik diutamakan apabila penukaran jenis boleh ditolak secara statik, manakala hantaran tafsir semula digunakan dalam senario tertentu:
Kajian Kes: Kebolehoperasian C dan C
Dalam khusus anda kes, di mana objek C diakses daripada kod C melalui penunjuk void*, reinterpret_cast ialah pilihan yang sesuai. Sebabnya ialah static_cast menjamin pemeliharaan alamat apabila menghantar ke dan dari kekosongan*. Oleh itu, kod berikut memastikan bahawa a, b dan c semuanya merujuk kepada alamat yang sama:
int* a = new int(); void* b = static_cast<void*>(a); int* c = static_cast<int*>(b);
Sebaliknya, reinterpret_cast memerlukan penuangan semula yang jelas kepada jenis penunjuk asal untuk mengekalkan nilai asal. Walaupun reinterpret_cast boleh digunakan di sini, static_cast lebih disukai untuk pemeliharaan alamat yang dijamin.
Atas ialah kandungan terperinci Bilakah `reinterpret_cast` Pilihan yang Diperlukan untuk Penukaran Jenis dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!