Operador de Criação de Objeto new

O operador new automaticamente cria um objeto de tamanho correspondente, chama o construtor do objeto e retorna um descritor do objeto criado. Em caso de falha, o operador retorna um descritor de null que pode ser comparado com a constante NULL.

O operador new pode ser aplicado somente a objetos de classe. Ele não pode ser aplicado a estruturas.

O operador não deve ser usado para criar arrays de objetos. Para fazer isso, use a função ArrayResize().

Exemplo:

//+------------------------------------------------------------------+
//| Criação de Figura                                                |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- cria aleatoriamente uma das 7 possíveis formas
   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;
     }
//--- desenhar
   if(m_shape!=NULL)
     {
      //--- pré-configurações
      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();
     }
//---
  }

Deve ser notado que um descritor do objeto não é um ponteiro para um endereço de memória.

Um objeto criado com o operador new deve ser explicitamente removido usando o operador delete.

Também Veja

Inicialização de Variáveis, Visibilidade Escopo e Tempo de Vida de Variáveis, Criando e Excluindo Objetos