initialisation von variablen



  • hallo,

    ich komme aus der delphi-ecke. in einer delphi-unit (keine formular-unit, eine ganz normale unit, nur mit quellcode) habe ich die möglichkeit unter dem abschnitt:
    initialization

    objecte, variablen oder sonst was zu initialisieren oder ausführen zu lassen.

    und so gibt es auch noch den abschnitt:
    finalization

    hier kann ich dann dinge zerstören wenn das prog oder die unit beendet wird.

    FRAGE: ich habe nur eine cpp-Datei (mit header), in dieser datei möchte ich auch dinge initialisieren und nach getaner arbeit zerstören, das initialisieren ist nicht so das problem, das macht er sobald ich die datei verwende,
    aber wie kann ich die object und so zerstören??? ich suche also so etwas wie
    finalization

    mfg
    murph



  • mit new kannst du ein object erstellen mit delete wieder löschen.



  • Aber du kannst auch ganz Objekte augf dem Stack erstelloen. Die löschen sioch
    automatisch:

    int a;
    if(a==0)
    {
      int i=4;   //hier wird i erstellt. 
      cout << i;  // hier ist i noch vvorhanden
    }
    
    cout << i;   // hier wurde i schon wieder gelöscht.
    

    Schau mal in cpp-tuts unter dem Begriff Gltigkeitsbereich oder so
    Gruß, Maxi



  • Wenn du für irgendwas Variablen leg sie auf dem Stack (wie Maxi) oder auf dem Heap (wie <chris> ) an. In C++ ist das nicht so besch'eiden' wie in Delphi... Du kannst sie mitten in einer Funktion erstellen, nicht wie in Delphi am Anfang einer Prozedur oder global (Globale gehen auch aber die sollte man in C++ vermeiden)... 😉 Such dir am besten mal ein vernünftiges Sample zum Einstieg...

    Hier mal ein wenig Beispielcode (nicht getestet 😉 )

    // sonstwas.cpp
    int a = 100,b = 20,c = 90,d = -23; // Globale
    
    int func(int u) {
      int v = a; // Lokal
    
      if(c == 0)
        d = a / b * c;
    
      char w = 'X'; // Lokal
      const char* c = "Hallo"; // Lokal
    
      return u * a; // Rückgabewert
    }
    
    int main(int argc, char** argv)
    {
      func(23);
      return 0;
    }
    

Anmelden zum Antworten