对象创建操作符new

new 操作符自动创建一个相应大小的对象,称为对象构造函数并回转已经创建的对象描述符。失败的情况下,操作符返回一个与常量NULL相比较的null描述符。

new操作符仅能用于对象。不能应用于结构。

操作符不用于创建对象数组。若要做这个,使用 ArrayResize()

示例:

//+------------------------------------------------------------------+
//| 图形创建                                                          |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- 随机创建7个可能形状中的一个
   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操作符直接移动。

另见

变量初始化可见范围和变量使用期创建和删除对象