それはオブジェクト指向云々っていうか言語仕様を把握しないと駄目だな。
virtualを使うと派生クラスの関数が呼ばれる。

class Base { virtual void Print() = 0; }
class A : public Base { void Print() { printf("A"); }
class B : public Base { void Print() { printf("B"); }

Base** t = new Base*[2];
t[0] = new A;
t[1] = new B;

for( int i = 0; i < 2; i++ )
 t[i]->Print();

結果は言わずもがな。

>>700の方法だと配列がクラスの実体だから、
こういう呼び出し方が出来ないわけだよ。