Weil besser als gut!

Prog2 Aufgabe - this constInhaltsverzeichnis AufgabeIm Verzeichnis Vorgabenlab05 finden Sie drei Dateien:, die Klassendeklaration und -definition der Klasse Mitarbeiter und ein Anwendungsprogramm.
Anmerkungen:
Erweiterung des ProjektsDie Mitarbeiter Klasse soll um eine Vergleichsfunktion aelter mit folgendem Prototyp erweitert werden: C++ const Mitarbeiter& aelter( const Mitarbeiter& mitarb ) const; Diese Methode vergleicht 2 Mitarbeiter Objekte ('dieses Objekt' mit dem mitarb-Objekt) bezüglich des Attributs Alter und liefert das ältere der beiden Objekte als Funktionsergebnis (das gesamte Objekt). Da die Methode die Objekte nicht ändert, wurde sie gleich als const Methode angelegt. Der Rückgabewert und der Parameter sind Referenzen auf konstante Objekte. Anleitungen
Hinweis: der this pointer kann dereferenziert werden TestSchreiben Sie ein neues Anwendungsprogramm:
C++ cout << "Der aeltere der Mitarbeiter huck und josef ist:n"; huck.aelter(josef).ausgeben(); weil das Methodenergebnis eine Referenz auf ein Mitarbeiter Objekt liefert, muss eine Ausgabe folgender Art auch möglich sein: C++ cout << "Der aelteste der Mitarbeiter " << "franz, josef, huck, lara und moritz ist:n"; franz.aelter(josef.aelter(huck.aelter(lara.aelter(moritz)))).ausgeben(); Lösung
Methode aelter()Im Grunde ist diese neue Methode ganz einfach zu erstellen. Mit diesem Prototyp C++ const Mitarbeiter& aelter( const Mitarbeiter& mitarb ) const; kann folgende Funktion definiert werden: C++ const Mitarbeiter& Mitarbeiter::aelter( const Mitarbeiter& mitarb ) const { // Programmcode ... } Man beachte hierbei den Unterschied zum Prototypen! Um den Compiler mitzuteilen, wo er die Funktion aelter()' findet, wird mit dem Bereichsgültigkeitsoperator (Scope, "::") die Klasse, in der sich die Funktion befindet, genannt. Innerhalb der Funktion kann jetzt über die übergebene Variable mitarb, die ja auf ein Objekt der Klasse Mitarbeiter zeigt, dessen Attribut alter'# angefragt werden und mit dem eigenen (this) verglichen werden: C++ if(this->alter > mitarb.alter) return *this; else return mitarb; Dieses Stück Code sagt also: "Wenn mein eigenens (this) Attribut alter größer (>) ist als das Attribut alter des übergebenen Objekts mitarb, gib einen Pointer (*this) auf mich selbst zurück, sonst den pointer auf das übergebene Objekt." Das bedeutet, dass diese Funktion immer einen Pointer auf das Objekt zurückgibt, in welchem das Attribut alter höher ist.
Kategorie: Programmieren2 |
Zahlen & Daten
Publish |