Schreibe eine Funktion maxLong. Diese Funktion hat zwei Werte vom
Datentyp
long als Argument und gibt einen long zurück. Dieser Rückgabewert
entspricht dem grösseren
der beiden Argumente.
(2 Punkte)
Schreibe nun eine template
Funktion max. Diese Funktion soll nun für
beliebige Datentypen den grösseren der beiden zurückliefern.
(3 Punkte)
Hier noch eine
schwierige Zusatzfrage: Was muss der Datentyp, für den du die
max-Funktion verwenden willst, für eine
Eigenschaft haben?
(1 Punkt)
(Total 6 Punkte)
Hier gilt es sicher wieder den
passenden Unterrichtsstoff zu "Templates" aus dem letzten Semester
bereit zu halten
Das schreiben der maxLong-Funktion darf kein Problem mehr sein!
Eine Funktion hat immer folgenden Aufbau:
Rückgabetyp Funktionsname([Argumenttyp Argumentname])
{
... Code
return [Rückgabetyp];
}
Die Aufgabe sagt Dir wie der Datentyp des Rückgabewertes heisst und auch
wie die Argumente sind.
Die Funktion selber ist recht einfach. Man könnte sie sogar auf einer Zeile
schreiben. Es genügt aber die Schreibweise, bei der du mit einem if prüfst, ob
arg1 grösser als arg2 ist und je nachdem das eine oder das andere zurückgibst.
Der Funktionsrumpf braucht so mit den { und } 8 Zeilen, die ganze Funktion also
10 Zeilen.
Um die template Funktion zu schreiben musst du zuerst die template Zeile
hinschreiben und danach musst du in der maxLong Funktion den Datentypen mit dem
Template Argument ersetzen.
Nachdem du weisst, wo anstelle des Datentypen das Template-Argument hinkommt,
kannst du die Funktion fast abschreiben. Ich habe in der Lösung die Argumente
als const-Referenzen hingeschrieben. Das wäre für die Aufgabe nicht nötig, aber
in der Praxis besser, da dadurch keine unnötigen Kopien erzeugt werden.
Zur Zusatzfrage: Da zum Vergleich der >-Operator verwendet wird, muss dieser
für den im Code verwendeten Datentypen (das Template-Argument) definiert sein.
Zum Teil muss man diesen sogar speziell definieren (operator >);