Ben küçük uygulanabilirliği ile karıştı reinterpret_cast
vs static_cast
. Ne okudum genel kurallar türleri derleme zamanında dolayısıyla kelime yorumlanabilir zaman statik döküm kullanmaktır static
. Bu, C ++ derleyicisinin dahili dökümler için dahili olarak kullandığı dökümdür.
reinterpret_cast
s iki senaryoda uygulanabilir:
- tamsayı türlerini işaretçi türlerine ve tam tersini dönüştürme
- bir işaretçi türünü diğerine dönüştürür. Anladığım kadarıyla genel fikir, bunun taşınabilir olmadığı ve kaçınılması gerektiğidir.
Biraz karışık nerede ihtiyacım olan bir kullanım, C + + C C deniyorum ve C kodu temelde bir tutar C ++ nesnesine tutunması gerekiyor void*
. void *
Sınıf türü arasında dönüştürme yapmak için hangi oyuncular kullanılmalıdır ?
İkisinin de kullanımını gördüm static_cast
ve reinterpret_cast
? Okuduğum şeyden static
, döküm derleme zamanında olabileceğinden daha iyi görünüyor olsa da ? reinterpret_cast
Bir işaretçi türünden diğerine dönüştürmek için kullanmasına rağmen ?
reinterpret_cast
çalışma zamanında olmaz. Her ikisi de derleme zamanı ifadeleridir. Kaynaktan en.cppreference.com/w/cpp/language/reinterpret_cast : "farklı static_cast ama const_cast gibi reinterpret_cast ifadesi herhangi bir CPU talimatlarına derlememektedir Bu sadece bit dizisini tedavisinde derleyici yönlendiren bir derleyici yönergesidir. (nesne temsili) ifadesini, new_type türünde olduğu gibi ifade eder. "