データを動的に確保するとき,Cでは次のようなことをよくやる.
C++では,動的なメモリの確保と再利用のための演算子が用意されている. 上記の例は,C++ではstruct vector2D *v; ... v = (struct vector2D*)malloc(sizeof(struct vector2D)); ... free(v);
と記述でき,簡潔だ.ここまで述べた例では,Cの例とC++の例とは ほとんど同じ意味だが,後述するコンストラクタやデストラクタが 絡んでくると,意味が変わってくる.vector2D *v; ... v = new vector2D; ... delete v;
newとdeleteを使って,配列を確保することもできる. 例えばvector2Dの10個の配列を確保する場合,
と記述する.メモリを回収するのが,deleteではなくdelete[] というところがポイントだ.struct vector2D *v; ... v = new vector2D[10]; ... delete[] v;