24項 仮想関数、多重継承、仮想基底クラスと実行時型識別のコストを理解する。

仮想関数、多重継承、仮想基底クラスと実行時型識別のコストを理解する。


仮想関数

仮想関数を持つクラスは、仮想テーブルを持ちます。
仮想関数を持つクラスのオブジェクトは、仮想テーブルへのポインタを持ちます。
仮想関数の呼び出し時に、仮想テーブルを参照し、対応する関数を探したあと関数を呼び出します。

多重継承

多重継承は単一継承と比べ、仮想関数呼び出しのコストがわずかに上昇します。
仮想基底クラスを持つ場合、仮想継承したクラスは仮想基底クラスへのポインタを持ちます。

実行時型識別

実行時型識別に使われる情報は、type_info型のオブジェクトが必要なので、その分だけデータ量が増加します。