オブジェクトポインタを使用してクラスを切り替える
OperationManagerを基本クラスとし、それに追加機能をつけるクラスAdditionalManagerを考える。
存在するクラスは以下の2つ。
・OperationManager
・AdditionalManager(これはOperationManagerを継承している)
この時両クラスには同名の関数virtual void func()があるとする。
どちらのクラスのfunc()を呼び出すかをシンプルに切り替える記述は以下の通り。
bool Additional = true; OperationManager *op; if (Additional) op = new AdditionalManager(); else op = new OperationManager(); op->func();
これにより
Additonal=trueの時 AdditionalManagerのfunc()
Additonal=falseの時 OperationManagerのfunc()
が呼び出される
なお、virtual をつけないと基本クラス(今回だとOperationManager)しか呼び出されないことに注意。