Может быть описано несколько функций с одним идентификатором, но разным списком параметров.
Одним из наиболее популярных случаев использования перегрузки является применение функции для получения определенного результата, исходя из различных параметров.
Пример: Найти площадь треугольника тремя способами.
float strl(float &x, float &y)
{
return x*y/2;
}
float strl(float &x, float &y, int &z)
{
return x*y*atan(1)*z/90;
}
float strl(float &x, float &y, float &z)
{
float p;
p=(x+y+z)/2;
return sqrt(p*(p-x)(p-y)(p-z));
}
void main ()
{
float a, b, c;
int n;
cout<<”Ploshad’ treugol’nika:”<<endl;
cout<<”1. Po osn. I vis.: ”<<endl;
cout<<”2. Po storonam I uglu v gradusah: ”<<endl;
cout<<”3. Po trem storonam: ”<<endl;
cout<<”Nomer puncta? ”<<endl;
cin>>n;
switch n
{
case 1:
cout<<”Osnovanie I visota? ”;
cin>>a>>b;
cout<<”Ploshad’ = ”<<strl(a, b)<<endl;
break;
case 2:
cout<<”Smegnie storoni I ugol? ”;
cin>>a>>b>>n;
cout<<”Ploshad’ = ”<<strl(a, b, n)<<endl;
break;
case 3:
cout<<”Tri storoni? ”;
cin>>a>>b>>c;
cout<<”Ploshad’ = ”<<strl(a, b, c)<<endl;
break;
default
cout<<”Nepravil’niy nomer punkta. ”;
}
}