動的キャスト

実行時にオブジェクトの型チェックと変換を行う、C++ のメカニズムで、多態性のあるクラス階層に対して、派生クラスのポインターか参照を、基底クラスのポインターか参照に変換するために用いられます。

動的強制構文は以下の通りです。

動的キャスト<新しい型>(式)

new_typeが変換後の型で、expressionが変換されるオブジェクトのポインタや参照です。

動的強制適用には下記条件を満たす必要があります。

  1. クラス階層において、親クラスには少なくとも一つは仮想関数がなければなりません。
  2. 変換対象は有効なポインタまたは参照でなければいけません。
  3. 変換先の型は有効なポインタまたは参照型でなければなりません。
  4. 変換対象の実際の型は、変換先の型と互換性がある、つまり、変換対象の型は、変換先の型か、変換先の型の派生型でなくてはならない。

変換が成功した場合、dynamic_cast は変換後のポインタまたは参照を返します。変換が失敗した場合、dynamic_cast はヌルポインタ (nullptr) を返したり、(参照の変換の場合) std::bad_cast 例外を送出します。

ダイナミックキャストは、多態性を持つクラス階層でのみ利用でき、多態性を持たないクラスでは利用できません。また、ダイナミックキャストは、実行時に型チェックを行うため実行時オーバーヘッドが比較的大きくなります。そのため、パフォーマンス要件の高い場面では、ダイナミックキャストを多用しないよう注意してください。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds