1 / 17

Zeiger und Objekte

17.06.2012. Prof. R. Zavodnik/C Vorlesung/Kap. 9. 2. Reihungen und Konstruktoren. Problem: Wie initialisiert man Reihungen von Objekten?Antwort: Mit Konstruktoren in den geschweiften Klammern. 17.06.2012. Prof. R. Zavodnik/C Vorlesung/Kap. 9. 3. Beispiel.

brandy
Download Presentation

Zeiger und Objekte

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Zeiger und Objekte Ohne Zeiger kein Polymorphismus S. Freud 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 1

    2. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 2 Reihungen und Konstruktoren Problem: Wie initialisiert man Reihungen von Objekten? Antwort: Mit Konstruktoren in den geschweiften Klammern

    3. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 3 Beispiel

    4. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 4 Zeiger auf Objekte Sind wie Zeiger auf struct in C++ zu schreiben Jedes Objekt besitzt einen besonderen Zeiger: this this ist die Speicheradresse des Objekts Typ ist Zeiger auf Klassentyp i. A. Typ ist Zeiger auf konstanten Klassentyp fr const Klassen

    5. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 5 Beispiel

    6. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 6 Bemerkungen Man achte auf den Fall fr Selbst-Kopierung Das Ergebnis ist die Kopie, d.h. das Objekt, auf das kopiert wird friend-Funktionen haben keine Zugriffsberechtigung auf this

    7. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 7 Dynamische Klassenobjekte Wie immer, mit new Dynamische Erzeugung von Objekten verursacht Aufruf von Konstruktoren Selbstgestrickte new gibt es auch

    8. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 8 Syntax

    9. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 9 Bemerkungen Normalerweise mit new allozierter Speicher wird nicht initialisiert (wie malloc()) ?Initialisierung durch Konstruktoren Reihungen knnen nicht so initialisert werden (siehe oben) delete ruft den Destruktor auf

    10. Beispiel Ohne Initialisierung 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 10

    11. Beispiel mit Initialisierung 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 11

    12. Beispiel Allozierung von Reihungen von Klassen 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 12

    13. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 13 Bemerkungen Reihungsgrenzen knnen auch erst zur Laufzeit bekannt sein Dynamische Allozierung von const Objekten auch mglich, z.B. const float *p = new const float(3.14); Bei delete fr Reihungen von Klassenobjekten werden Destruktoren aufgerufen

    14. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 14 Beispiel: Klassendefinition

    15. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 15 Beispiel: Hauptprogramm

    16. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 16 Ausgabe

    17. 18.06.2012 Prof. R. Zavodnik/C++ Vorlesung/Kap. 9 17 Fehler bei Heap-Allozierung delete nicht korrekt angewandt. Ergebnis: memory leak delete auf ein Objekt mehrmals angewandt (z.B. ber Zeiger). Knnte ein neues Objekt korompieren! Anwendung oder Zuweisung von Objekten nach Ihrer De-Allozierung. Ergebnis:???

More Related