Operatore new di Creazione Oggetto

L'operatore new crea automaticamente un oggetto di una grandezza corrispondente, chiama il costruttore dell'oggetto e restituisce un descrittore di oggetto creato. In caso di fallimento, l'operatore restituisce un descrittore null che può essere confrontato con la costante NULL.

Il nuovo operatore può essere applicato solo ad oggetti classe. Non può essere applicato a strutture.

L'operatore non deve essere usato per creare array di oggetti. Per effettuare questa operazione, utilizzare la funzione ArrayResize().

Esempio:

//+--------------------------------------------------------------------------------+
//| Creazione figura                                                               |
//+--------------------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- a caso crea una delle 7 forme possibili
   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();
     }
//---
  }

Va notato che il descrittore oggetto non è un puntatore all' indirizzo di memoria.

Un oggetto creato con l'operatore new deve essere esplicitamente rimosso usando l'operatore delete.

Vedi anche

Inizializzazione delle Variabili, Visibilità Ambito e Durata delle Variabili, Creazione ed Eliminazione di Oggetti