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

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

Перегрузка процедур и функций — возможность использования одноимённых подпрограмм: процедур или функций в языках программирования.

Содержание

Причина появления

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

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

Реализация

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

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

Чтобы исключить ошибку программиста давшему случайно имя подпрограмме, которое уже используется, вводится дополнительное требование написания ключевого слова. Так сделано, например в языке Delphi (ключевое слово overload).

Правила перегрузки функции

Перегружемая функция должна отличаться либо арность или типом данных. То же самое имя функции используется для различных случаев вызова функции. Это классификация статического полиморфизма, в котором вызов функции будет решен с помощью " лучшего матча техники » , т. е. функция будет решена в зависимости от списка аргументов. Метод перегрузки, как правило, связан с статически-типизированным языком программирования, который соблюдает проверку типа в вызовах функций . При перегрузке метода, вы действительно просто делаете ряд различных методов, которые происходят с одинаковыми именами. Он решается во время компиляции , какой из этих методов. Метод перегрузки не следует путать с формами полиморфизма , где правильный метод выбран во время выполнения, например, посредством виртуальных функций , а не статически. Пример: перегрузки функций в C + +

main()
{
    cout<<volume(10);
    cout<<volume(2.5,8);
    cout<<volume(100,75,15);
}
 
// volume of a cube
int volume(int s)
{
    return(s*s*s);
}
 
// volume of a cylinder
double volume(double r,int h)
{
    return(3.14*r*r*h);
}
 
// volume of a cuboid
long volume(long l,int b,int h)
{
    return(l*b*h);
}

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

Конструктор перегрузки

Конструкторы, используемые для создания экземпляров объектов, также могут быть перегружены в некоторых объектно-ориентированных языках программирования . Потому что во многих языках название конструктора предопределено именем класса, казалось бы, что может быть только один конструктор. Всякий раз, когда несколько конструкторов нужны, они реализованы в виде перегруженных функций. Конструктор по умолчанию не принимает параметров, экземпляр объекта члены с нулевым значением. [ 1 ] Например, конструктор по умолчанию для объекта bill в ресторане написана на C + + может установить Tip до 15%:

Bill()
{ 
    tip = 15.0; 
    total = 0.0; 
}

Недостатком является то, что он делает два шага, чтобы изменить значение созданного Bill объекта. Ниже показано создание и изменение значений в рамках основной программы:

Bill cafe;
cafe.tip = 10.00;
cafe.total = 4.00;

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

Bill(double setTip, double setTotal)
{ 
    tip = setTip; 
    total = setTotal; 
}

Теперь функция, которая создает новый объект Bill может иметь два значения в конструктор и устанавливать элементы данных в один шаг. Ниже показано создание и установка значений:

Bill cafe(10.00, 4.00);

Это может быть полезно в повышении эффективности программ и сокращение длины кода.

Предостережения

Если метод разработан с чрезмерным количеством перегрузок, это может быть трудным для разработчиков, при определении, какие перегрузки в настоящее время используются.

См. также



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Перегрузка процедур и функций" в других словарях:

  • Перегрузка операций — (операторов, функций, процедур) в программировании один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов операции (оператора, функции или… …   Википедия

  • Перегрузка функций — Перегрузка операций (операторов, функций, процедур) в программировании один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов операции (оператора …   Википедия

  • Перегрузка — Перегрузка: Перегрузка (авиация) отношение подъёмной силы к весу Перегрузка (техника)  в ускоряющихся объектах Перегрузка (шахматы) шахматная ситуация, когда фигуры (фигура) не в состоянии справиться с поставленными задачами. Перегрузка… …   Википедия

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

  • Переопределение операторов — Перегрузка операций (операторов, функций, процедур) в программировании один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов операции (оператора …   Википедия

  • Object Pascal — Семантика: императивная Класс языка: мультипарадигмальный: императивный, структурный, объектно ориентированный, обобщённый[1], процедурный Тип исполнения: компилируемый …   Википедия

  • Переопределение метода — (англ. Method overriding) в объектно ориентированном программировании одна из возможностей языка программирования, позволяющая подклассу или дочернему классу обеспечивать специфическую реализацию метода, уже реализованного в одном из… …   Википедия

  • Паскаль (язык программирования) — Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ …   Википедия

  • Паскаль (язык) — Pascal Семантика: процедурный Тип исполнения: компилятор Появился в: 1970 г. Автор(ы): Никлаус Вирт Паскаль (англ. Pascal) высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко… …   Википедия

  • Экспорт — (Export) Определение экспорта, виды экспорта, схема экспортной сделки Информация об определении экспорта, виды экспорта, схема экспортной сделки Содержание Экспорт (программирование) Экспорт Экспорт товаров Экспортные ы Экспорт товаров и таможня… …   Энциклопедия инвестора


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»