私はreinterpret_cast
とstatic_cast
の適用性について少し混乱しています。コンパイル時にタイプを解釈できるので、一般的な規則はstaticキャストを使用しているので、単語static
を読みました。これは、C++コンパイラが暗黙のキャストのために内部的に使用するキャストです。reinterpret_castをいつ使用しますか?
reinterpret_cast
は、整数型をポインタ型に変換したり、ポインタ型を別の型に変換したりする2つのシナリオに適用できます。私が得る一般的な考えは、これは不可能であり、避けるべきです。
私が少し混乱しているのは、私が必要とする使い方です.C++をCから呼び出しています.CコードはC++オブジェクトを保持する必要がありますので、基本的にはvoid*
を保持しています。 void *
とクラスの間の変換にはどのようなキャストを使用する必要がありますか?
私はstatic_cast
とreinterpret_cast
の両方の使用法を見ていますか?私が読んできたことから、キャストはコンパイル時に起こるので、static
が優れていますか?あるポインタ型から別のポインタ型に変換するのに、reinterpret_cast
を使用すると言いますか?
'reinterpret_cast'は実行時には発生しません。どちらもコンパイル時のステートメントです。 http://en.cppreference.com/w/cpp/language/reinterpret_castから: "const_castとは異なり、const_castのように、reinterpret_cast式はCPU命令にコンパイルされません。これは純粋にコンパイラ指示文ですあたかもそれがnew_type型を持っているかのように、表現のビット(オブジェクト表現)のシーケンスを扱う " –
@HeretoLearn、* .cと* .cppファイルから関連コードを追加することは可能ですか?私はそれが質問の説明を改善できると思います。 – OrenIshShalom