lokale variablen ..



  • male ne frage:
    angenommen ich erzeuge in ner schleife lokale variablen des typs int und packe diese in einen global erzeugten vector (stl). dann kann ich doch nicht sichergehen dass ausserhalb der schleife die objekte die dann in vector stecken immer noch da sind oder??

    Ist es in diesem Fall pflicht die einzupackenden objekte per new zu erzeugen??

    danke
    gruss



  • Der Vektor bekommt im Falle von vector<int> eine Kopie der lokalen Variable.



  • Die Objekte werden immer in den std::vector kopiert, deshalb gibt es die Werte auch außerhalb der Schleife. Und nein, es ist nicht Pflicht, die Variablen per new() zu erzeugen.

    Nur sicherheitshalber, da du von Objekten redest:
    Etwas wie das hier:

    for(blabla) {
        int var = berechneWert();
        //...
        meinVector.push_back(var);
    }
    

    packt den Wert von var in meinVector - das Objekt wird kopiert. So habe ich deine Frage verstanden.
    Aber das hier:

    for(blabla) {
        int var = berechneWert();
        //...
        meinVector.push_back(&var);   // Fehler!
    }
    

    packt die Adresse von var (wenn du so willst das Objekt selbst) in meinVector. Und hier ist es tödlich, da var nur innerhalb der Schleife existiert. Du müßtest die Objekte mit new() erzeugen. Bloß warum sollte man das tun?

    Stefan.


Anmelden zum Antworten