V tej vadnici bomo s primeri spoznali preobremenitev funkcije v jeziku C ++.
V C ++ imata lahko dve funkciji isto ime, če se število in / ali vrsta podanih argumentov razlikuje.
Te funkcije z istim imenom, vendar različnimi argumenti, so znane kot preobremenjene funkcije. Na primer:
// same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )
Tu so vse 4 funkcije preobremenjene.
Upoštevajte, da vrste vračanja vseh teh 4 funkcij niso enake. Preobremenjene funkcije imajo lahko različne vrste vrnitve, vendar morajo imeti različne argumente. Na primer
// Error code int test(int a) ( ) double test(int b)( )
Tu imata obe funkciji isto ime, isti tip in enako število argumentov. Zato bo prevajalnik vrnil napako.
Preobremenitev funkcije z uporabo različnih vrst parametrov
// Program to compute absolute value // Works for both int and float #include using namespace std; // function with float type parameter float absolute(float var)( if (var < 0.0) var = -var; return var; ) // function with int type parameter int absolute(int var) ( if (var < 0) var = -var; return var; ) int main() ( // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; )
Izhod
Absolutna vrednost -5 = 5 Absolutna vrednost 5,5 = 5,5Delovanje preobremenitve za funkcijo absolute ()
V tem programu preobremenimo absolute()
funkcijo. Glede na vrsto parametra, ki je bil poslan med klicem funkcije, se pokliče ustrezna funkcija.
Preobremenitev funkcije z različnim številom parametrov
#include using namespace std; // function with 2 parameters void display(int var1, double var2) ( cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; ) // function with double type single parameter void display(double var) ( cout << "Double number: " << var << endl; ) // function with int type single parameter void display(int var) ( cout << "Integer number: " << var << endl; ) int main() ( int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; )
Izhod
Število celih števil: 5 Število floatov: 5,5 Število celih števil: 5 in dvojno število: 5,5
Tu se display()
funkcija trikrat pokliče z različnimi argumenti. Glede na število in vrsto podanih argumentov display()
se pokliče ustrezna funkcija.
Vrnitev vseh teh funkcij je enaka, vendar ni nujno, da gre za preobremenitev funkcije.
Opomba: V C ++ so številne standardne funkcije knjižnice preobremenjene. Na primer, sqrt()
lahko funkcija traja double
, float
, int,
itd, kot parametri. To je mogoče, ker je sqrt()
funkcija v C ++ preobremenjena.