跳至内容

Object Create Operator new

对象创建运算符 new

new 运算符会自动创建一个相应大小的对象,调用对象的构造函数,并返回已创建对象的描述符。如果失败,该运算符将返回一个 null 描述符,可以与 NULL 常量进行比较。

new 运算符只能应用于对象。它不能应用于结构体。

该运算符不得用于创建对象数组。为此,请使用ArrayResize()函数。

示例:

//+------------------------------------------------------------------+
//| Figure creation                                                  |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- randomly create one of the 7 possible shapes
   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;
     }
//--- draw
   if(m_shape!=NULL)
     {
      //--- pre-settings
      m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
      m_shape.SetYPos(m_ypos);
      m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
      //--- draw
      m_shape.Draw();
     }
//---
  }

需要注意的是,对象描述符不是内存地址的指针。

使用 new 运算符创建的对象必须使用delete运算符显式删除。

另请参阅

变量的初始化变量的可见性范围与生命周期对象的创建与删除

最后更新于