16

static_cast<T>(...)コンパイル時または実行時に行われることはありますか? 私はグーグルで調べましたが、異なる答えが得られました。

また、dynamic_cast<T>(...)明らかに実行時ですが、どうreinterpret_cast<T>(...)ですか?

4

2 に答える 2

14

他に何をキャストするかによって異なります。たとえば、コンストラクターstatic_cast<std::string>("Hello")を呼び出すことになります。std::string

頭のてっぺんから、reinterpret_cast実際の機械語命令を生成する必要がある場合は考えられません。コンパイラに伝えているだけです: このビットパターンを取り、それがこの型の値であると信じます。

于 2013-08-26T23:36:31.613 に答える
5

コンパイル時間。実際、コンパイラは実行時コードを挿入して、結果が正しいことを確認することさえしません。もちろん、コンパイラは変換が静的に可能であることを確認します。例: サブクラスからスーパークラスへのキャスト。変換に組み込み関数またはキャスト関数の呼び出しが必要な場合、それらはもちろん実行時に実行されますが、型チェックは行われません。

于 2013-08-26T23:34:54.937 に答える