Перегрузка функций

Очень часто алгоритмы обработки данных одинаковы, отличаются лишь типы обрабатываемых данных. Название (или имя) каждой функции указывает, что она делает и показывает тип выводимых данных. В C++ разрешается использовать одно и то же название (имя) функции, чтобы объявлять и определять различные версии функции. Эта возможность названа перегрузкой функции. C++ требует, чтобы соблюдались следующие правила при объявлении перегруженных функций:

1) каждая версия перегруженной функции должна иметь отличную от других сигнатуру функции. Сигнатура функции определена числом параметров и их типами данных. Сигнатура функции не включает тип возвращаемой величины, потому что C++ разрешает игнорировать тип возвращаемой величины в операторе. Сигнатура, однако, включает последовательность параметров, которые имеют различные типы данных;

2) если функция имеет параметры со значениями по умолчанию, компилятор не включает эти параметры как часть сигнатуры функции.

Рассмотрим пример функции, выполняющей пузырьковую сортировку одномерного массива. При этом алгоритм сортировки совершенно одинаков, отличаются только типы массивов.

void Sort (int Mas[ ], int N); // целочисленный массив

void Sort (double Mas[ ], int N); // вещественный массив

void Sort (char Mas[ ], int N); // символьный массив

//--------------------------------------------------------------------------------- void main(){ int A[Nmax] = { 25, 18, 42, 76, 38} ;double B[Nmax] = { 1.5, 2.7, 5.4, 3.9, 7.2} ;char C[Nmax] = { ‘z’, ‘d’, ‘w’, ‘a’, ‘d} ;int N;

Sort(A, N); // или Input(&Mas[0], N); передаётся адрес 1-го элемента

}

Версия перегруженной функции определяется компилятором по типу аргументов, использованных при вызове перегруженной функции. В данном примере будет вызвана первая версия функции Sort() для сортировки целочисленного массива.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: