Функцияларнинг қайта юкланиши.
Функцияни қайта юклашга доир мисоллар
Функцияларнинг қайта юкланиши
Функцияларнинг “қайта юклаш” – бу айнан бир ном билан функцияни бир неча марта эълон қилиш. Шундай қилиб, маълум кўриниш доирасида “қайта юкланаёган” функциянинг номи бир неча марта эълон қилинади. Қайта юкланган функцияларни компилятор бир – биридан фарқлай олиши учун бу функциялар кириш параметрлари рўйхати билан фарқланиши шарт.
Функцияларнинг қайта юкланиши
Фақат ўзларининг аргументлар типи ёки сони билан фарқланувчи функциялар қайта юкланиши мумкин. Фақат қайтарадиган қийматлари типи билан фарқланувчи функцияларни қайта юкланиши мумкин эмас. Қайта юкланаёган функция моҳияти бўйича яқинроқ бўлган амаллар учун бир ном билан мурожаат ҳуқуқини бериш орқали дастурни соддалаштириш имкониятини беради.
Функцияларнинг қайта юкланиши
Умумий ҳолда, маълум кўриниш доирасида “қайта юкланаёган” функция эълони қуйидагича:
return_type1 FunName(parameters_list_1)
{
// ...
}
return_type2 FunName(parameters_list_2)
{
// ...
}
return_typeN FunName(parameters_list_N)
{
// ...
}
Функцияларнинг қайта юкланиши
бу ерда
- FunName – қайта юкланаёган функциянинг номи;
-parameters_list1, parameters_list2,…, parameters_listN – FunName номи билан қайта юкланаёган функция параметлари рўйхати;
- return_type1, return_type2, …, return_typeN –
қайта юкланган FunName функция қайтараётган параметлари типи.
Қайта юкланган функциялар фарқланаши
Қайта юкланган функциялар параметрлари рўйхати бўйича фарқланади. Қайта юкланган функциялар параметрлари рўйхати қуйидаги аломатлар бўйича фарқланаши керак:
- параметрлари сони;
- агар параметрлар сони бир хил бўлса, параметрлар типи бўйича.
Масалан. Max() қайта юкланган функция, параметрлар сони ҳамда параметрлар типи бўйича фарқланади.
// int типдаги икки параметрли Max функцияси
int Max(int a, int b)
{
// ...
}
// int типдаги учта параметрли Max функцияси
int Max(int a, int b, int c)
{
// ...
}
// double типдаги икки параметрли Max функцияси
int Max(double a, double b)
{
// ...
}
1-мисол. Equal() типлардаги икки қийматни таққослаш функцияси. Функция турли (char, int, double) типлар учун уч марта қайта юкланган.
#include
using namespace std;
bool Equal(char c1, char c2)
{
return (c1==c2);
}
bool Equal(double d1, double d2)
{
return (d1==d2);
}
bool Equal(int i1, int i2)
{
return (i1==i2);
}
1-мисол. Equal() типлардаги икки қийматни таққослаш функцияси. Функция турли (char, int, double) типлар учун уч марта қайта юкланган.
int main()
{
bool b;
b = Equal(5,6);
// Equal(int, int) чақирилаяпди, b = 0
cout<b = Equal(3.755, 3.755);
// Equal(double, double) чақирилаяпди, b = 1
cout<b = Equal('A', 'A');
// Equal(char, char) чақирилаяпди, b = 1
cout<return 0;
}
2-misol. Average()- o’rta arifmetik qiymatni hisoblaydigan funksiya. Funksiya butun parametrlarning turli xil miqdori uchun 4 marta qayta yuklanishi amalga oshirilgan.
#include
using namespace std;
double Average(int a, int b)
{
return (a+b)/2.0;
}
double Average(int a, int b, int c)
{
return (a+b+c)/3.0;
}
2-misol. Average()- o’rta arifmetik qiymatni hisoblaydigan funksiya. Funksiya butun parametrlarning turli xil miqdori uchun 4 marta qayta yuklanishi amalga oshirilgan.
double Average(int a, int b, int c, int d)
{
return (a+b+c+d)/4.0;
}
double Average(int a, int b, int c, int d, int e)
{
return (a+b+c+d+e)/5.0;
}
2-misol. Average()- o’rta arifmetik qiymatni hisoblaydigan funksiya. Funksiya butun parametrlarning turli xil miqdori uchun 4 marta qayta yuklanishi amalga oshirilgan.
int main()
{
double avg;
avg = Average(2,3); // avg = 2.5
cout<avg = Average(2,3,5); // avg = 3.3333
cout<avg = Average(2,3,5,8); // avg = 4.5
cout<avg = Average(2,3,5,8,11); // avg = 5.8
cout<return 0;
}
Do'stlaringiz bilan baham: |