new オブジェクト作成演算子

new 演算子は、対応するサイズのオブジェクトを自動的に作成し、オブジェクトのコンストラクタを呼び出して作成されたオブジェクトの記述子を返します。失敗した場合、この演算子は NULL 定数と比較出来る null 記述子を返します。

new 演算子はクラスオブジェクトのみに適応出来ます。構造体には適応出来ません。

この演算子はオブジェクトの配列の作成には使用できません。オブジェクトの配列の作成には ArrayResize() 関数が使用されます。

例:

//+------------------------------------------------------------------+
//| 図の作成                                                          |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
 {
  m_ypos=HORZ_BORDER;
//--- 7 つの可能な図形から 1 つをランダムに選んで作成する
  int nshape=rand()%7;
  switch(nshape)
    {
    case 0: m_shape=new CTetrisShape1; break;
    case 1: m_shape=new CTetrisShape2; break;
    case 2: m_shape=new CTetrisShape3; break;
    case 3: m_shape=new CTetrisShape4; break;
    case 4: m_shape=new CTetrisShape5; break;
    case 5: m_shape=new CTetrisShape6; break;
    case 6: m_shape=new CTetrisShape7; break;
    }
//--- 描画する
  if(m_shape!=NULL)
    {
    //--- 事前設定
     m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
     m_shape.SetYPos(m_ypos);
     m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
    //--- 描画する
     m_shape.Draw();
    }
//---
 }

オブジェクト記述子はメモリアドレスへのポインタではないことには留意すべきです。

new 演算子を使用して作成したオブジェクトは、明示的に delete 演算子を使用して解除されるべきです。

参照

変数の初期化変数のアクセス権スコープとライフタイムオブジェクトの作成と解徐