仮想関数

virtual.png

意味

may be redefined later in a class derived from this one

(この関数は)あとでこのクラスを継承する子クラスで再定義しますよ、という意味
virtualをつけた関数は、このクラスとこのクラスから派生したクラスで定義された関数のinterfaceとして機能することを示す。
仮想メンバ関数のことをmethodと呼ぶこともある[1]

=0

=0がついてると、このクラスから継承した子クラスは必ずこの関数を定義しなくてはならない。
と、いう意味になる。

仮想関数には、派生クラスで再定義できる、という利点があります。
基底クラスの仮想関数を派生クラスで再定義することをオーバーライドといいます。
(javaのオーバーライドと少し違うかな。と思ったけど
Java では、クラスのすべてのメソッドは仮想関数です。

どんな時に使う? デストラクタには必ずつけるのが吉

デストラクタでは主に、リソースの解放とかを行う。
普通、リソースって、親クラスじゃなくて、子クラスが(より多く)持ってるよね?
なので、デストラクタにはvirtualをつけて、必ず確実に呼び出されるようにするのは吉です。

サポートサイト Wikidot.com