10. Перегрузка функций и методов.
«Объектно-ориентированное программирование»
доцентПриваловМ.В.
Донецк,ДонНТУ,2011
Перегрузка функций
Перегрузкафункций - это создание нескольких функций водномпространстве имен, которыеимеют одинаковые имена.
Перегрузку функций используют для выполнения похожих операций над аргументами различных типов
Пример перегрузки
#include <stdio.h>
void Print(int number)
{
printf("%d", number);
}
void Print(double number)
{
printf("%.15f", number);
}
void Print(const char* str)
{
printf("%s", str);
}
Пример перегрузки
int main()
{
Print(1);
printf("\n");
Print(8.0/3);
printf("\n");
Print("Hello World\n"); return 0;
}
Функциисразличным количествомаргументов
Функциисодним именем могут иметь различноеколичество аргументов.
Привызове таких функций будетвызываться тафункция, количество формальных аргументов которойсовпадает с количеством переданных параметров.
Функциисразличным
количествомаргументов
void Print(char ch) { putchar(ch);
}
void Print(char ch, int count) { while (count--) {
putchar(ch);
}
}
int main() { Print('!'); putchar('\n'); Print('!', 5); putchar('\n'); return 0;
}
Выборнужной функции
Выборпроизводится путём анализа сигнатуры функции
Всигнатуру входят:
◦порядокитипыпараметров
◦модификаторconst длянестатическихфункций
◦модификаторvolatile
Типвозвращаемого значения невходит в сигнатуру!
Правиласопоставления параметров
Правила сопоставления имеют следующие приоритеты (в порядке убывания):
◦Точноесопоставление
◦Сопоставлениесиспользованиемстандартных целочисленныхпреобразованийсплавающей запятой
charвint, short вint, float в double
◦Сопоставлениесиспользованиемстандартных преобразований
int вdouble,derived* вbase*, unsigned вint
◦Сопоставлениесиспользованиеммноготочия...