CからC++に移行中の人が質問するためのスレ
■ このスレッドは過去ログ倉庫に格納されています
0663デフォルトの名無しさん
2006/01/31(火) 15:56:36X*p=new X[10];
delete[]p;
は問題ないが
X*p=new ChildX[10];
delete[]p
は実はC++では駄目。
なぜなら、これを実現しようとすると型のサイズと要素数の二つを暗黙的に管理する必要になるので、
そんなもったいないことは貧乏くさいC++では許さないのだ。
ChildX*p = new ChildX[10];
delete[]p;
のように正しい型の配列にするか、
X**p=new X*[10];
for(int i=0;i<10;++i)p[i] = new ChildX;
for(int i=0;i<10;++i)delete p[i];
delete[]p;
のようにポインタの配列にするのがC++のルール。
■ このスレッドは過去ログ倉庫に格納されています