new und delete



  • Hallo Leute:

    Folgende Frage:

    Kann mir jmd diesen Code erklären?
    Also ganz genau?

    und zwar nicht auf new und delete bezogen sondern auf den Zeiger bezogen??
    Ich würde gerne wissen was die erste Zeile in der Funktion macht und warum hier der Klassenname steht.

    void fn()
    
    {
    
    Student *ps;
    ps= new Student;
    delete ps;
    
    }
    


  • Hallo

    Student *ps;
    

    Hier wird ein Zeiger namens ps vom Typ Student deklariert.

    bis bald
    akari



  • kk das war schon klar, trotzdem danke, das problem ist ich versteh nicht wieso das gemacht wird.

    Also statt einem Objekt wird erst mal ein Zeiger deklariert.
    Wieso muss ich den typ bei new dann nochmal angeben?

    thx



  • new soll speicher reservieren und benötigt dafür den Konstruktionsplan von Student um die größe zu berechnen.

    Aus ps bekommt er dieses nicht raus, da es den Typ Student* hat.



  • Hallo

    Also statt einem Objekt wird erst mal ein Zeiger deklariert.

    Ein Zeiger wir ddekalriert und ein Objekt erzeugt, da sist schon mal ein Unterschied.
    Und wie willst du ohne Zeiger auf das erzeugte Objekt zugreifen?

    Wieso muss ich den typ bei new dann nochmal angeben?

    Der Typ bei der Erzeugung ist die Klasse. Und Symbolisiert den zu verwendenen Konstruktor, der bei manchen Klassen auch noch Parameter enthalten kann.
    Desweiteren kann sich der Konstruktor-Typ und der Pointer-Typ voneinander unterscheiden (Polymporphe Vererbung)

    Du solltest erstmal die Grundlagen durcharbeiten, insbesondere zum Thema Unterschied zwischen Pointer und Instanzen.

    bis bald
    akari



  • vielen dank für die antowrten ich verstehe jetzt das mit dem student in der new zeile und auch was ich da mit dem ps vor mir habe.

    Nur noch ne letzte Frage (sry wenn ich nerve nur ich wills ganz genau wissen):

    Wozu muss der Zeiger den Typ Student haben?
    Welche Fähigkeiten hat dieser Zeiger?

    Wieso muss ich also den Klassennamen vor den Zeiger schreiben und deklariere nicht einfach einen?

    Vielen Dank für die Hilfe



  • Hallo

    nein du hast es immer noch nicht verstanden

    Wieso muss ich also den Klassennamen vor den Zeiger schreiben und deklariere nicht einfach einen?

    Gerade weil, und ausschließlich dadurch das du "den Klassennamen vor den Zeiger" schreibst, wird ein Zeiger deklariert.

    bis bald
    akari



  • Beherzige bitte den Rat mit den Grundlagen, denn ohne sie wirst Du mit den Antworten auf Deine Fragen immernoch nichts anfangen können. Aber weil's so schön ist:

    muhi89 schrieb:

    Wozu muss der Zeiger den Typ Student haben?

    Weil er auf ein Objekt vom Typ Student zeigen soll.

    Welche Fähigkeiten hat dieser Zeiger?

    Er kann auf ein Objekt vom Typ Student (und davon abgeleiteter Typen) zeigen.



  • Ok ich versteh gar nichts mehr und bin echt frustriert da ich mich wirklich bemühe und sonst auch nicht begriffstuzig bin......

    Also wie kann ein da ein zeiger sein wenn noch gar kein Objekt existiert??
    Er zeigt doch noch auf gar nichts oder?



  • ich frag mich eben wo hier das objekt erzeugt worden ist oda KA kanns mir jmd in ALLEN Einzelheiten erklären??

    Wäre sehr nett



  • Hallo

    Ja da ist ein Zeiger ohne gültige Instanz. Bevor er in der nächsten Zeile eine gültige neue Instanz zugewiesen bekommt.
    Allerdings zeigt er schon irgendwo hin, allerdings wegen der zufälligen, nicht initialisierten Adresse in wilden Speicher. Jeder Dereferenzierung (Benutzung des Ziels des Pointers) ist damit ungültig und führt zu den bekannten Speicherzugriffsfehlern.

    bis bald
    akari



  • muhi89 schrieb:

    ich frag mich eben wo hier das objekt erzeugt worden ist oda KA kanns mir jmd in ALLEN Einzelheiten erklären??

    Wäre sehr nett

    Schau dir das mal an. Nein es ist keine Verarsche, sondern ernst gemeint.

    bis bald
    akari



  • Ok das erklärt mir das Student vor dem Zeiger.

    K ne Frage:

    Wird bei new ein neues Objekt der Klasse Student erzeugt?
    Bzw etwas was äquivalentes dazu?



  • Hallo

    Wird bei new ein neues Objekt der Klasse Student erzeugt?

    genau das.

    bis bald
    akari


Anmelden zum Antworten