Gewicht ); } int Gewicht; }; this hat den Typ Hamster *"> Gewicht ); } int Gewicht; }; this hat den Typ Hamster *">
Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Ulbrecht Adrian Geändert vor über 11 Jahren
1
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring doering@inf.fu-berlin.de SS 2004
2
Seminar: "Einführung in C/C++"2 Member-Funktion kennt ihr Objekt Bei dem Aufruf einer Member-Funktion weiß diese, zu welchem Objekt der Aufruf geschieht: struct Hamster { void fuettern() { ++Gewicht; } int Gewicht; }; Hamster billy; billy.fuettern(); erhöhe billy.Gewicht
3
Seminar: "Einführung in C/C++"3 Der this -Pointer In einer Member-Funktion zeigt der this -Pointer auf das aktuelle Objekt: struct Hamster { void fuettern() { ++( this->Gewicht ); } int Gewicht; }; this hat den Typ Hamster *
4
Seminar: "Einführung in C/C++"4 Ctors und Dtor Konstruktoren: Aufruf bei Erzeugung eines Objekts. Destruktor: Aufruf bei der Zerstörung eines Objekts. Konstruktor ohne Argument: Default Ctor struct Hamster { Hamster() { } };
5
Seminar: "Einführung in C/C++"5 Ablaufplan beim Erzeugen/Zerstören Objekt erzeugen: 1.Rufe Default Ctors der Basisklassen auf. 2.Rufe Default Ctors der Member-Variablen auf. 3.Rufe den Ctor des Objektes selbst auf. (Ablaufplan bei Zerstörung: Übungsaufgabe)
6
Seminar: "Einführung in C/C++"6 Objekte kopieren Es gibt zwei Fälle, in denen Objekte kopiert werden: 1. Initialisierung: Hamster billy; Hamster sunny = billy; 2. Zuweisung: Hamster billy, sunny; sunny = billy;
7
Seminar: "Einführung in C/C++"7 1. Kopieren bei Initialisierung Objekte werden mit dem Copy Konstruktor bei der Initialisierung kopiert: struct Hamster { Hamster() { Alter = 0; } Hamster(Hamster const & ham){ Alter = ham.Alter; } int Alter; }; Hamster billy; Hamster sunny = billy;
8
Seminar: "Einführung in C/C++"8 Copy-Ctor im Detail Hamster (Hamster const & ham) { Alter = ham.Alter; } Anmerkungen: Das Argument ham ist const : Es wird durch den CTor nicht verändert. Alternative Schreibweise für Initialisierung: Hamster billy; Hamster sunny(billy);
9
Seminar: "Einführung in C/C++"9 2. Kopieren bei Zuweisung Bei Zuweisungen wird statt dessen der assignment- Operator ausgeführt: struct Hamster {... Hamster & operator= (Hamster const & ham) { Alter = ham.Alter; return *this; } int Alter; }; Hamster billy, sunny; sunny = billy;
10
Seminar: "Einführung in C/C++"10 operator= im Detail Hamster & operator= (Hamster const & ham) { Alter = ham.Alter; return *this; } Anmerkungen: Argument ham ist const : Es wird durch operator= nicht verändert. Es wird das Objekt selbst zurückgegeben: *this Der Typ der Rückgabe ist Hamster &.
11
Seminar: "Einführung in C/C++"11 Operatoren überladen Man kann fast alle Operatoren überladen. Ausnahmen (u.a.):. (Member selection) :: (Scope resolution) Zwei Möglichkeiten: 1.Durch Member-Funktion 2.Durch globale Funktion
12
Seminar: "Einführung in C/C++"12 1. Operatoren als Member-Funktion unäre Operatoren: Wirken aufs aktuelle Objekt Hamster & Hamster::operator~ () {...} binäre Operatoren: Aktuelles Objekt steht links. Hamster & Hamster::operator+ ( int const right ) {... }
13
Seminar: "Einführung in C/C++"13 2. Operatoren als globale Funktion unäre Operatoren: Hamster & operator~ (Hamster const & hams) {...} binäre Operatoren: Aktuelles Objekt steht links. Hamster & operator+ (Hamster const & left, int const right) {... }
14
Seminar: "Einführung in C/C++"14 virtuelle Funktionen (1) Das Problem: sei z.B. folgendes Programm gegeben: struct Auto { void tanken() { std::cout << "Benzin";...} void starten() { if (Tankfuellung == 0) tanken();... } }; struct Solarmobil: Auto { void tanken() { std::cout << "Sonne";... } };
15
Seminar: "Einführung in C/C++"15 virtuelle Funktionen (2)... Solarmobil mob; mob.starten(); Ausgabe: Benzin Grund: Die Basisklasse Auto kennt die abgeleitete Klasse Solarmobil nicht. void starten() { tanken(); this-Pointer hat Typ Auto * }
16
Seminar: "Einführung in C/C++"16 virtuelle Funktionen (3) Lösungsmöglichkeit: virtual struct Auto { virtual void tanken() {...} };... Solarmobil mob; mob.starten();//Ausgabe: "Sonne"
17
Seminar: "Einführung in C/C++"17 Standardlibraries Standard Headerdateien:
18
Seminar: "Einführung in C/C++"18 (Notizseite)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.