Информатика и технология программирования

       

Перегрузка (переопределение) функций


В Си++ возможно определение нескольких функций с одинаковым именем, но с разными типами формальных параметров и результата. При этом транслятор выбирает соответствующую функцию по типу фактических параметров. Переопределяемую функцию необходимо объявить с ключевым словом overload:


overload SetDat;
void SetDat(int dd,int mm,int yy,dat *p)
{ // Дата вводится в виде трех целых


p-&#62day=dd;
p-&#62month=mm;
p-&#62year=yy;
}
void SetDat(char *s,dat *p)
{ // Дата вводится в виде строки


sscanf(s,"%d%d%d", &#38p-&#62day, &#38p-&#62month, &#38p-&#62year);
}
void main()
{
dat a,b;
SetDat(12, 12, 1990, &#38a); // Вызов первой функции


SetDat("12,12,1990", &#38b); // Вызов второй функции


}

Функции-элементы структуры также могут быть переопределены, при этом явного объявления не требуется:


&#35include &#60stdio.h&#62
struct dat
{
int day,month,year;
void SetDat(int,int,int);
void SetDat(char *);
};
void dat::SetDat(int dd,int mm,int yy)
{
day=dd; month=mm; year=yy;
}
void dat::SetDat(char *s)
{
sscanf(s,"%d%d%d",&#38day,&#38month,&#38year);
}
void main()
{
dat a,b;
a.SetDat(12,12,1990);
b.SetDat("12,12,1990");
}



Содержание раздела