配列をポリモーフィックに扱ってはいけないから。

関数a()の中では、引数として渡された配列をA型の配列としてアクセスしているが、
実際はD型の配列なので、A::aとは違うところのメモリを読んで出力している可能性が高い。