C ++ funkcijų perkrova (su pavyzdžiais)

Šioje pamokoje sužinosime apie funkcijų perkrovą C ++ pavyzdžiais.

C ++ versijoje dvi funkcijos gali turėti tą patį pavadinimą, jei pateiktų argumentų skaičius ir (arba) tipas skiriasi.

Šios funkcijos, turinčios tą patį pavadinimą, bet skirtingus argumentus, vadinamos perkrautomis funkcijomis. Pavyzdžiui:

 // same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )

Čia visos 4 funkcijos yra perkrautos funkcijos.

Atkreipkite dėmesį, kad visų šių 4 funkcijų grąžinimo tipai nėra vienodi. Perkrautoms funkcijoms gali būti skirtingi grąžinimo tipai, tačiau jų argumentai turi būti skirtingi. Pavyzdžiui,

 // Error code int test(int a) ( ) double test(int b)( )

Čia abi funkcijos turi tą patį pavadinimą, tą patį tipą ir tiek pat argumentų. Taigi kompiliatorius sukels klaidą.

Funkcijos perkrova naudojant įvairių tipų parametrus

 // 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; )

Rezultatas

 Absoliuti vertė -5 = 5 Absoliuti vertė 5,5 = 5,5
Absoliučios () funkcijos perkrovos darbas

Šioje programoje mes perkrauname absolute()funkciją. Atsižvelgiant į parametro tipą, perduotą funkcijos iškvietimo metu, iškviečiama atitinkama funkcija.

Funkcijos perkrova naudojant skirtingą parametrų skaičių

 #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; )

Rezultatas

 Sveikas skaičius: 5 Plūduriuojantis skaičius: 5,5 Sveikas skaičius: 5 ir dvigubas skaičius: 5,5

Čia display()funkcija iškviečiama tris kartus su skirtingais argumentais. Atsižvelgiant į perduotų argumentų skaičių ir tipą, display()iškviečiama atitinkama funkcija.

Ekrano () funkcijos perkrovos darbas

Visų šių funkcijų grąžinimo tipas yra tas pats, tačiau tai neturi būti perkrovos atveju.

Pastaba: C ++ versijoje daugelis standartinių bibliotekos funkcijų yra perkrautos. Pavyzdžiui, sqrt()funkcija gali imtis double, float, int,ir tt kaip parametrus. Tai įmanoma, nes sqrt()funkcija perkrauta C ++.

Įdomios straipsniai...