Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

5.6 Überladen von Funktionen

5.6 Überladen von Funktionen

Hin und wieder gibt es Situationen, in welchen zwei Funktionen fast identischen Code ausführen, nur mit dem Unterschied, dass die Übergabeparameter einen anderen Type besitzen. Der Programmierer hat somit doppelten Aufwand. Zudem kommt hinzu, dass auch eine Doppelte Fehlerquelle da ist, da man Fehler ggf. an zwei Stellen beheben müsste.

Um dem ganzen aus dem Weg zu gehen, wurde ein Mechanismus erfunden, welcher sich Überladen nennt. Im Folgenden Beispiel wird nicht viel Code ausgeführt und von daher sehen Sie da nicht die Code-Ersparnis, aber es verdeutlicht die Funktionsweise ganz gut.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
					
// Berechnet eine Potenz ////////////////////////////////////////////////////// 
double CalcPower(float fBasis, int iExponent) {
	double dResult	= 1;

	// Nur für positive Exponenten
	if (iExponent >= 0) {
		// Multiplizieren
		for (int iCounter=1; iCounter<=iExponent; iCounter++) {
			dResult *= fBasis;
		} // end of if
	} else {
		return 0;
	} // end of if

	return dResult;
} // CalcPower ////////////////////////////////////////////////////////////////



// Benutzt die Ausgansfunktion, damit nicht alles doppelt geschrieben werden muss
int CalcPower(int iBasis, int iExponent) {
	double dResult = CalcPower((float)iBasis, iExponent);
	return (int)dResult;
} // CalcPower ////////////////////////////////////////////////////////////////



// Hauptfunktion des Programms ////////////////////////////////////////////////
int main(int argc, char* argv[]) {
	float	fBasis1		= 5.2;
	int	iBasis2		= 10;
	int	iExponent	= 3;

	printf("%g\n", CalcPower(fBasis1, iExponent));
	printf("%i\n", CalcPower(iBasis2, iExponent));	// benutzt überladende Funktion

	return 0;
} // main /////////////////////////////////////////////////////////////////////
					

Ausgabe:

140.608
1000
		

Gerade bei gezeigtem Konstrukt, muss darauf geachtet werden, dass die Funktion mit dem eigentlichen Algorithmus, an oberster Stelle steht und alle anderen, die jene benutzen, darunter.

Beim Überladen ist wichtig, dass etwas unterschiedlich ist. Sei es die Anzahl der Übergabeparameter oder, wenn es genauso viele sind, der Typ einer oder aller Variablen.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012