static_cast<T>(...)
コンパイル時または実行時に行われることはありますか? 私はグーグルで調べましたが、異なる答えが得られました。
また、dynamic_cast<T>(...)
明らかに実行時ですが、どうreinterpret_cast<T>(...)
ですか?
static_cast<T>(...)
コンパイル時または実行時に行われることはありますか? 私はグーグルで調べましたが、異なる答えが得られました。
また、dynamic_cast<T>(...)
明らかに実行時ですが、どうreinterpret_cast<T>(...)
ですか?
他に何をキャストするかによって異なります。たとえば、コンストラクターstatic_cast<std::string>("Hello")
を呼び出すことになります。std::string
頭のてっぺんから、reinterpret_cast
実際の機械語命令を生成する必要がある場合は考えられません。コンパイラに伝えているだけです: このビットパターンを取り、それがこの型の値であると信じます。
コンパイル時間。実際、コンパイラは実行時コードを挿入して、結果が正しいことを確認することさえしません。もちろん、コンパイラは変換が静的に可能であることを確認します。例: サブクラスからスーパークラスへのキャスト。変換に組み込み関数またはキャスト関数の呼び出しが必要な場合、それらはもちろん実行時に実行されますが、型チェックは行われません。