Operator der Objekterzeugung new

Operator new erzeugt automatisch das Objekt entsprechender Größe, ruft Objektentwurf auf und gibt Descriptor des erzeugten Objektes zurück. Beim Misserfolg gibt der Operator einen Null-Descriptor zurück, der mit der Konstante NULL verglichen werden kann.

Operator new kann nur für Objekte der Klasse verwendet werden, für Strukturen kann sie nicht verwendet werden. Operator new kann nur für  Objekte komplizierter Typs verwendet werden (Strukturen und Klassen).

Operator wird nicht für Erzeugung von Objektarrays angewendet. Dafür muss man die Funktion ArrayResize() benutzen.

Beispiel:

//+------------------------------------------------------------------+
//| Figurerzeugung                                                   |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- Zufallsmaessig erzeugen wir eine der 7 moeglicher Figuren 
   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;
     }
//--- zeichnen wir
   if(m_shape!=NULL)
     {
      //--- Ersteinstellungen
      m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
      m_shape.SetYPos(m_ypos);
      m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
      //--- zeichnen wir
      m_shape.Draw();
     }
//---
  }

Es muss bemerkt werden, das der Objektdescriptor kein Speicheranzeiger ist.

Objekt, erzeugt vom Operator new, muss explizit vom Operator delete entfernt werden.

Sehen Sie auch

Initialisierung der Variablen, Sichtbereich und Lebensdauer der Variablen, Erzeugung und Entfernung der Objekte