2つ質問させてください。
手元にコンパイル環境がないのでためせません。

>>120の問題点である
cl = new CLASS_hoge[i];のせいで
i=4の時にclの示すアドレスがCLASS_hoge[4]の配列で
上書きされてるのはわかるんですが、
i=4の時に、配列には、0から3までしかないか、メモリの不正アクセスが発生しませんか?

また、cl[i].output();で表示しようにも
配列にはi=0〜3のときの
cl[i].output();って400ではなく初期値じゃないんですか?