Aliasing...



  • Irgendwie verstehe ich das Prinzip bzw den Grund des Aliasings nicht ...
    Aus den Vorlesungen habe ich nur soviel mitgenommen ...
    Wenn ich im Konstruktor dynamisch speicher allokiere ..
    Und nun ein Objekt dieser Klasse einer Funktion übergebe ...
    Stirbt sowohl die "Kopie" als auch das eigentliche Objekt ..
    Deswegen muss einen neuen Copy Konstruktor implementieren
    der ebenfalls dynamsich Speicher für dieses attribut frei gibt ..
    Ist das so richtig formuliert ???
    Aber warum ist das so .. ???
    Im internet habe ich irgendwie keine richtige Erklärung gefunden ..



  • Bacid90210 schrieb:

    Ist das so richtig formuliert ???

    Ich verstehe ehrlich gesagt nicht, worauf du hinauswillst.

    Sobald die compiler-generierten Grossen Drei (Kopierkonstruktor, Zuweisungsoperator, Destruktor) nicht das Richtige tun, d.h. eine elementweise Kopie/Zuweisung/Zerstörung nicht ausreicht, musst du die Grossen Drei eben selbst implementieren. Mit der Übergabe von Objekten an Funktionen hat das nicht wirklich was zu tun.

    Übrigens reicht ein Fragezeichen, und etwas zusammenhängendere Sätze wären vielleicht auch von Vorteil.



  • Kannst Du Dein Verständnisproblem näher schildern? Vielleicht mit Beispielen und Erklärungen/Fragen dazu Deinerseits? Ich sehe bei Dir nur eher eine Aneinanderreihung von Stichwörtern. Daraus kann ich mir keine Frage zusammenreimen.

    kk



  • Ok ich geb mir Mühe mich besser auszudrücken.
    Auf Seite 29 - 35 des Skriptes findet ihr die Problematik .
    Das sollte erklärn was genau ich meine.
    http://rapidshare.com/files/398265753/02_Grundlagen_OO_mit_C__.pdf.html



  • Das ist da doch wunderbar erklärt, finde ich. Wo ist das Problem?



  • Was ist passiert: Man hat einen Zeiger als Datenelement, Speicher im Konstruktor angefordert und will diesen wieder im Destruktor freigen. Es ist aber ein Kopierkonstruktor vergessen worden. Deswegen wird das OBjekt elementweise kopiert. Die beiden Studenten-Objekte haben jetzt beide einen Zeiger, der auf dasselbe Array zeigt. Also, obwohl eigentlich nur ein Objekt für die Verwaltung zuständig sein sollte, "fühlen sich jetzt zwei verantwortlich"; denn das erste Objekt, was zerstört wird, gibt auch über den Destruktor das Array wieder frei. "Aliasing" oder auch "Sharing" heißt hier einfach nur, dass beide Zeiger auf auf dasselbe Array zeigen.

    Ich wär didaktisch da vielleicht anders rangegangen. Man sollte die Studenten das mal aufmalen lassen, was wo liegt und wer auf was zeigt. Dann kommt die Frage, was denn eigentlich passieren soll, wenn ein Objekt kopiert wird. Soll das zweite Student-Objekt ein eigenes Array bekommen oder soll es auf das Array es anderen zeigen? ...



  • Ok vielen Dank ...jetz hab ichs verstanden 😃 ..


Log in to reply