静的な多態性と動的な多態性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/05 07:11 UTC 版)
「ポリモーフィズム」の記事における「静的な多態性と動的な多態性」の解説
詳細は「テンプレートメタプログラミング#静的ポリモーフィズム」、「遅延バインディング(英語版)」、および「動的ディスパッチ(英語版)」を参照 ポリモーフィズムは実装がいつ選択されるかによって、静的(コンパイル時)か動的(実行時)かに区別できる。これはそれぞれ静的ディスパッチおよび動的ディスパッチとして知られ、さらにこれらに対応するポリモーフィズムはそれぞれ静的ポリモーフィズムおよび動的ポリモーフィズムと呼ばれる。後者は典型的には仮想関数などを通して実現される。 動的ディスパッチのオーバーヘッドが無いため、静的ポリモーフィズムはより高速に実行できるが、追加的なコンパイラの補助を必要とする。静的ポリモーフィズムではコンパイラやソースコード解析ツール、プログラマの目視による、より広範な静的解析(特に最適化)が可能となる。動的ポリモーフィズムはより柔軟だが速度はより遅くなる。例えば動的ディスパッチではダック・タイピングが可能で、動的にリンクされたライブラリはオブジェクトの型を知らなくても動作できるだろう。 典型的にはアドホック多相とパラメトリック多相は静的ポリモーフィズムとして動作し、サブタイプ多相は動的ポリモーフィズムとして動作する。しかし、奇妙に再帰したテンプレートパターンのような洗練されたテンプレートメタプログラミングを通して、サブタイプ多相で静的ポリモーフィズムを実現することも可能である。
※この「静的な多態性と動的な多態性」の解説は、「ポリモーフィズム」の解説の一部です。
「静的な多態性と動的な多態性」を含む「ポリモーフィズム」の記事については、「ポリモーフィズム」の概要を参照ください。
- 静的な多態性と動的な多態性のページへのリンク