配列を多型的に扱ってはなりません。
C/C++ における配列インデックスは、ポインター算術として実装されます。したがって、a[i] は a+i*SIZEOF(配列要素) に相当します。派生クラスは基本クラスよりも大きいことが多いため、多型性とポインター算術はテクニックとして両立できません。