Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Перегруженные функции



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

Перегруженные функции различаются компилятором с помощью так называемой сигнатуры – списка типов их аргументов. Однако, используя в перегруженных функциях параметры по умолчанию, следует быть осторожным, так как функция с пропущенными аргументами может быть вызвана не той перегруженной функцией.

Примером эффективного использования перегрузки функций является задача сортировки массивов различных типов. Ниже приведена программа сортировки методом "пузырька" числовых массивов типа 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...