Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
С++ позволяет определять несколько функций, реализующих один и тотже алгоритм, с одним и тем же именем. Эта особенность называется перегрузкой функции, а сами функции - перегруженными функциями. Применение таких функций делает программы более понятными и легко читаемыми.
Перегруженные функции различаются компилятором с помощью так называемой сигнатуры – списка типов их аргументов. Однако, используя в перегруженных функциях параметры по умолчанию, следует быть осторожным, так как функция с пропущенными аргументами может быть вызвана не той перегруженной функцией.
Примером эффективного использования перегрузки функций является задача сортировки массивов различных типов. Ниже приведена программа сортировки методом "пузырька" числовых массивов типа int, long, float и double различной размерности (лист. 6.2).
Листинг 6.2. func. сpp
#include <iostream.h>
#include <math.h>
//Прототипы перегруженных функций sort
void sort(int,int[]);
void sort(int,long[]);
void sort(int,float[]);
void sort(int,double[]);
void main() //Основная программа
{
/* Корректируемые параметры до использования
программы: значение m и тип z */
const int m=5; //Размерность массива чисел
double z[m]; //Тип массива чисел z
//Ввод массива
cout<<"Введите элементы массива z[]:\n";
for(int i=0;i<m;i++)
{
cout<<"z["<<i<<"]=";cin>>z[i];
}
cout<<"\nИсходный массив чисел:\n"<<"z["<<m<<"]={";
for(int i=0;i<m;i++)
cout<<z[i]<<" ";
cout<<"}"<<endl;
cout<<"\nОтсортированный массив чисел:\n"<<"z["<<m<<"]={";
sort(m,z); //Обращение к функции sort с массивом типа double
cout<<"}";
}
//Перегруженная функция для массива типа int
void sort(int n,int mass[]) //Заголовок с параметром - массивом
{
//Сортировка методом "пузырька"
for(int i=0;i<n-1;i++)
{ int a;
for(int j=i+1;j<n;j++)
if (mass[j]<mass[i])
{a=mass[i];
mass[i]=mass[j];
mass[j]=a;
}
}
//Вывод отсортированного массива
for(int i=0;i<n;i++)
cout<<mass[i]<<" ";
}
//Перегруженная функция для массива типа long
void sort(int n,long mass[])
{
for(int i=0;i<n-1;i++)
{ long a;
for(int j=i+1;j<n;j++)
if (mass[j]<mass[i])
{a=mass[i];
mass[i]=mass[j];
mass[j]=a;
}
}
for(int i=0;i<n;i++)
cout<<mass[i]<<" ";
}
//Перегруженная функция для массива типа float
void sort(int n,float mass[])
{
for(int i=0;i<n-1;i++)
{ float a;
for(int j=i+1;j<n;j++)
if (mass[j]<mass[i])
{a=mass[i];
mass[i]=mass[j];
mass[j]=a;
}
}
for(int i=0;i<n;i++)
cout<<mass[i]<<" ";
}
//Перегруженная функция для массива типа double
void sort(int n,double mass[])
{
for(int i=0;i<n-1;i++)
{ double a;
for(int j=i+1;j<n;j++)
if (mass[j]<mass[i])
{a=mass[i];
mass[i]=mass[j];
mass[j]=a;
}
}
for(int i=0;i<n;i++)
cout<<mass[i]<<" ";
}
Дата публикования: 2014-11-02; Прочитано: 377 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!