(C++) mal so dahergefragt ...



  • Hallo. Ich habe da mal ein paar Fragen. (Ich benutze den C++ Builder 6).

    1.) Bin noch ein ziemlicher "Frischling" in C++. Ich weiß, das man, wenn man in Java ein Oblekt aus dem Speicher haben will nur die Referenz darauf entfernen muß (obj1 = null;). Der Garbage Collector übernimmt dann den Rest. Was pasiert, wenn ich das in C++ mache? Bleibt das Objekt dann auf immer und ewig irgendwo im Speicher (zumindest bis zum nächsten Neustart des Rechners)?

    2.) Wie entferne ich es richtig? Habe gelesen, das ich das mit 'delete obj1;' machen kann. In der Borland IDE gibt es jedoch auch die Methode
    'delete(obj1);'. Gibt es da einen Unterschied oder hat Borland da bloß den delete Befehl als methode umgesetzt?

    3.) Weniger als Frage sondern mehr interessehalber würde ich gerne folgendes wissen: (ein wenig Quellcode):

    private:
    int a = 4711;

    public:

    void inc_a(int &a){
    ::a = ::a + a;
    }

    Wenn ich jetzt von außerhalb inc_a(var1) aufrufe (mit z.B. int var1 = 5) ändere ich augenblicklich die private Variable a in 5. Ich muß zugeben, das ich das etwas verwirrend finde. Ist dies konvention in C++ oder abhängig vom Compiler (hier Borland)? Wenn ich den selben Code statt mit '&' mit '*' schreibe (void(int *a){::a = ::a + *a;}) passiert überigens das selbe.



  • 1. du musst delete benutzen, ansonsten steht dein Objekt zumindest bis zum Programmende im Speicher und wenn du den Pointer auf 0 setzt hast du keine Möglichkeit mehr es zu löschen.

    2. ist genau dasselbe



  • Verschoben nach "C++".


Anmelden zum Antworten