Anfängerfrage - Funktionen
-
Abend,
Ist es erlaubt mehrere Funktionen mit dem selben Namen zu definieren?
int maximum(int a, int b) { return((a>b)?a:b); } int maximum(int a, int b, int c) { return(maximum(a,maximum(b,c))); }Der Code ansich funktioniert!
Ich frag nur aus reinem Interesse und zur Bildung

Lg Mentras
-
Ja. Das nennt man speziell Überladung. Bei jeder Funktion muss jedoch ein anderer Parameter oder ein anderer Funktionsdatentyp deklariert werden. Also exakt die selben Funktionen klappt nicht.
-
Huch,
eine schnelle Antwort hab ich nicht erwartet.
Wie ist das mit den "andere Funktionsdatentypen" bzw. "andere Parameter" gemeint?
Die Variablen werden doch nur lokal deklariert,...

Lg Mentras
-
Naja, mit gleichen Datentypen meine ich beispielsweise:
int peter(int lustig); int peter(int lustig);Das ginge also wieder:
int peter(int lustig); char *peter(int lustig);Das mit dem Überladen:
int peter(int lustig); int peter(int lustig, int krebs); int peter(int lustig, int krebs, char *TGGC);Geht.
-
damit meint er untschiedliche variablen typen in der parameterliste
wie:int funk(int ,int) int funk (char ,int) int funk (int , char) int funk (char) ...
-
Ahhh, verstehe!
Also nicht die selbe Parameteranzahl bzw. die selbe Funktionsdatentypen.
Danke schön!
Lg Mentras
-
sicher das das geht
int peter(int lustig); char *peter(int lustig);war immer der meinung das sich eine funktion nicht nur am return typ unterscheiden darf
-
war immer der meinung das sich eine funktion nicht nur am return typ unterscheiden darf
Dem ist auch so.
Woher soll der Compiler denn sonst wissen welche der beiden (in dem von dir geposteten Beispiel) Funktionen er aufrufen soll bei gleicher Parameterliste?
-
war mir eigendlich sicher wollt jetzt dem poster vor mir nicht auf irgendeine art kränken
da er dies ja als ein beispiel aufgeführt hat welches funktionieren sollte
-
Äh, falsch, geht natürlich nicht
.