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

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



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

Например:

играть на пианино

играть словами

играть игрушкой

играть на бирже

То есть в данном случае глагол играть, написанный везде одинаково в зависимости от контекста принимает понимается нами по-разному. В объектно- ориентированном программировании простота очень важна чем меньше нужно знать о системе и ее использовании тем лучше. То же касается и работы с функциями. Чем меньше деталей нужно указывать при вызове функции тем лучше. Рассмотрим функцию Write, которая принимает аргумент и отображает его в типизированной форме на экране. Было бы прекрасно если бы одна и та же функция могла работать с любым типом аргументов. Это становится возможным благодаря использованию перегруженных функций. При вызове такой функции компилятор видит типы всех аргументов используемых в списке параметров. каждая функция определяется отдельно от других функций и отличается от них количеством и типом принимаемых параметров (В нашем случае функции различаются только типом принимаемых параметров) Говорят что функция перегружена если ее идентификатор ассоциируется более чем с одной функцией

Например

Write(“Нужно вывести строку”);

Write(1589);// Выводим число типа integer

Write(3.14159);// Выводим число типа float

Опишем используемые функции

void Write(char stroka[])

{

prinf(“%s”,stroka[]);

}

void Write(int chislo)

{

prinf(“%i”,chislo);

}

void Write(float chislo)

{

prinf(“%f”,chislo);

}


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

void error(int); и long error(int);

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

Задания для самоконтроля:

1. Что будет выведено на экран в результате работы следующей программы?

#include <iostream.h>

void summ(int &i)

{

i=i+1;

}

void summ(double &x)

{

x=x+1;

}

void summ(char &c)

{

c=c+1;

}

main()

{

char c='A';int i=10; double x=10.2;

cout<<"\n начальные значения переменных:";

cout<<" i="<<i;

cout<<" c="<<c;

cout<<" x="<<x;

summ(i); summ(c); summ(x);

cout<<"\n значения переменных после вызова функций:";

cout<<" i="<<i<<" c="<<с<<" x="<<x;

}

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





Дата публикования: 2014-12-08; Прочитано: 257 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



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