Przeciążanie funkcji

Transkrypt

Przeciążanie funkcji
Przeciążanie funkcji
Przeciążanie nazw funkcji polega na wielokrotnym wykorzystaniu takiej samej
jej nazwy, różniącej się tylko typem i ilością argumentów.
Rozpatrzmy funkcję, która będzie liczyła pole pewnej figury. Pole figury jakiej
ma liczyć uzależnimy od ilości argumentów i typów argumentów. Nasza funkcja
będzie nosiła nazwę Pole.



float Pole(float p) - funkcja liczy pole kwadratu
double Pole(double p) - funkcja liczy pole koła
float Pole(float a,float b) - funkcja liczy pole prostokąta itd.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
float Pole(float a)
{
return a*a;
}
double Pole(double r)
{
return 3.14*r*r;
}
float Pole(float a,float b)
{
return a*b;
}
int main()
{
float a,b;
double r;
char opcja;
cout<<"Wybierz opcję: "<<endl;
cout<<"1 - pole kwadratu "<<endl;
cout<<"2 - pole prostokąta "<<endl;
cout<<"3 - pole koła "<<endl;
cin>>opcja;
switch(opcja)
{
case '1':
cout<<"Podaj długość boku: "; cin>>a;
cout<<"Pole kwadratu wynosi "<<Pole(a)<<endl;
break;
case '2':
cout<<"Podaj długość boku a: "; cin>>a;
cout<<"Podaj długość boku b: "; cin>>b;
cout<<"Pole prostokąta wynosi "<<Pole(a,b)<<endl;
break;
case '3':
cout<<"Podaj długość promienia: "; cin>>r;
cout<<"Pole koła wynosi "<<Pole(r)<<endl;
break;
default: cout<<"Wybrałeś nieprawidłową
opcję!"<<endl;
}
system("pause");
return 0;
}
Kiedy nie wolno przeciążać funkcji?
Do przeciążenia funkcji nie wystarczy różny tym zwracanych wartości np.:
int funkcja(int a)
char funkcja(int a)
W przykładzie powyżej, funkcje mają różne zwracane wartości, natomiast takie same
argumenty - kompilator wyrzuci błąd!

Podobne dokumenty