Opérateur de Création d'Objet new

L'opérateur new crée automatiquement un objet de la taille désirée, appelle le constructeur de l'objet et retourne un descripteur sur l'objet créé. En cas d'échec, l'opérateur retourne un descripteur null qui peut être comparé avec la constante NULL.

L'opérateur new ne peut être appliqué qu'aux objets de classe objects. Il ne peut pas être appliqué aux structures.

L'opérateur ne devrait pas être utilisé pour créer des tableaux d'objets. Pour cela, utilisez la fonction ArrayResize().

Exemple :

//+------------------------------------------------------------------+
//| Création de la figure                                            |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- crée l'une des 7 formes possibles de façon aléatoire
   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;
     }
//--- dessin
   if(m_shape!=NULL)
     {
      //--- pré-configuration
      m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
      m_shape.SetYPos(m_ypos);
      m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
      //--- dessin
      m_shape.Draw();
     }
//---
  }

Il est à noter que le descripteur de l'objet n'est pas un pointeur sur une adresse mémoire.

Un objet créé avec l'opérateur new doit être supprimé de façon explicite avec l'opérateur delete.

Voir aussi

Initialisation des Variables, Portée de Visibilité et Cycle de Vie des Variables, Créer et Supprimer des Objets