テンプレートでのポインタの排除
クラス テンプレートの概要:インデックス への移動
ポインタを使わずに実際のオブジェクトを取り込む方法もあります。この設計方法をとると,コンパイラがオブジェクトの実際の型を把握できるので,仮想関数の呼び出し回数が減ります。仮想関数が小さく,インライン展開によって効率が上げられる場合は,この方法は非常に有効です。ポインタを通して呼び出す仮想関数をインラインにすることはできません。コンパイラが実際のオブジェクトの型を把握できないためです。
template <class T> aBase {
.
.
.
private:
T buffer;
};
class anObject : public aSubject, public aBase<aFilebuf> {
.
.
.
};
aBase 内のすべての関数は,aFilebuf に定義されている関数をポインタを使わずに直接呼び出せます。aFilebuf にインラインにできる関数があれば,テンプレートでインラインにできるので,処理速度が向上します。