仮想関数は関数が呼ばれるタイミングが決まっているが内容はあとから書き直す
場合に使われる。JAVAではpaint(Graphics g)命令のようにアプレットのなかの
描画部分をあとから書き直す(オーバーライド)ことができる。これと同じような
機能を実現するのが仮想関数である。引数や戻りの型は同じである必要がある。
この例ではポインターの型が派生クラスのものであ
れば基本クラスと同じ呼出方で派生クラスのメソッドが呼び出されることが分
かる。
仮想関数を使えば関数の呼出を実行時に切替えることができるような、フレキ
シブルなプログラムを作ることができる。これを実行時バインディング(late binding)と呼ん
でいるようである。この機能とライブラリの動的なローディングの機能を組み
合わせると多機能なプログラムを作ることができる。アトラスのソフトウエア
であるアテナやガウディ、CDF実験のアナリシスコントロールはそういった機
能を使っている。Geant4にこの機能を足したものとしてFADS/goofyがある。