Operador-creador de objetos new

El operador new crea automáticamente un objeto de tamaño correspondiente, arranca el constructor del objeto y devuelve el descriptor del objeto creado. En caso de un fallo el operador devuelve el descriptor cero que se puede comparar con la constante NULL.

El operador new  puede ser aplicado únicamente a los objetos de la clase, no se puede aplicarlo a las estructuras.

El operador no se aplica para crear los arrays de objetos. Para eso hay que usar la función ArrayResize().

Ejemplo:

//+------------------------------------------------------------------+
//| Creación de una figura                                                  |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- de una manera aleatoria creamos una de 7 posibles figuras
   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;
     }
//--- dibujamos
   if(m_shape!=NULL)
     {
      //--- configuraciones iniciales
      m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
      m_shape.SetYPos(m_ypos);
      m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
      //--- dibujamos
      m_shape.Draw();
     }
//---
  }

Cabe mencionar que el descriptor del objeto no es un puntero a la memoria.

El objeto creado con operador new tiene que ser eliminado de una forma explícita por el operador delete.

Véase también

Inicialización de variables, Visibilidad y tiempo de vida de variables, Creación y eliminación de objetos