動的メソッド

提供: RAD Studio
移動先: 案内検索

メソッドのディスパッチ への移動


動的メソッドは仮想メソッドですが、少し異なるディスパッチ メカニズムを備えています。動的メソッドでは、オブジェクトの仮想メソッド テーブルにエントリがないため、オブジェクトにより消費されるメモリの量を減らすことができます。ただし、動的メソッドのディスパッチは、通常の仮想メソッドの場合より少し遅くなります。メソッドが頻繁に呼び出される場合や、メソッドの実行速度が重視される場合は、メソッドを動的メソッド(dynamic)ではなく通常の仮想メソッド(virtual)として宣言すべきでしょう。

オブジェクトには、それ自身の動的メソッドのアドレスが格納されている必要があります。しかし、動的メソッドは、仮想メソッド テーブルに登録されるのではなく、それとは別個のリストで管理されます。個々のクラスの動的メソッド リストには、そのクラスで新規追加またはオーバーライドされたメソッドのエントリのみ含まれています。これに対して、仮想メソッド テーブルには、継承されたものも新しく追加されたものも含めて、オブジェクトのすべての仮想メソッドが含まれています。継承された動的メソッドのディスパッチは、継承ツリーをさかのぼりながら各上位クラスの動的メソッド リストを調べて、行われます。

メソッドを動的メソッドにするには、メソッド宣言の後に dynamic 指令を追加します。