Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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



Читайте также:
  1. II. Описание трудовых функций, входящих в профессиональный стандарт
  2. Адаптация. Коррекция и компенсация функций
  3. АЛГЕБРАИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ ЛОГИЧЕСКИХ ФУНКЦИЙ
  4. В.1.Предел и непрерывность функции одной и нескольких переменных. Свойства функций, непрерывных на отрезке.
  5. В.5. Функциональные ряды. Равномерная сходимость. Признак Вейерштрасса. Непрерывность суммы равномерно сходящегося ряда непрерывных функций.
  6. В.9. Ряд Фурье по ортогональной системе функций. Неравенство Бесселя, равенство Парсеваля, сходимость ряда Фурье.
  7. ГОРМОНАЛЬНАЯ РЕГУЛЯЦИЯ ФУНКЦИЙ ОРГАНИЗМА

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

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

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

Пример 5.6. Перегруженная функция умножения: двух целых чисел, трех целых чисел, двух вещественных чисел, трех вещественных чисел.

#include <iostream>

using namespace std;

 

int mul(int a, int b) {return a * b;}

int mul (int a, int b, int c) {return a * b * c;}

float mul (float a, float b) {return a * b;}

int mul (float a, float b, float c) {return a * b * c;}

 

int main()

{int m, k, l;

float p, q;

cout << "m = ";

cin >> m;

cout << "k = ";

cin >> k;

cout << "l = ";

cin >> l;

cout << "p = ";

cin >> p;

cout << "q = ";

cin >> q;

cout << "m * k = " << mul (m, k) << endl;

cout << "k * l = " << mul (k, l) << endl;

cout << "m * k * l = " << mul (m, k, l) << endl;

cout << "p * q = " << mul (p, q) << endl;

cout << "p * q * q= " << mul (p, q, q) << endl;

return 0;

}

Существует три жестких ограничения на возможность перегрузки функций.

1) Функции не могут быть перегружены, если они отличаются только типом возвращаемого значения:

int OverloadFn (char *str);

char OverloadFn (char *str);

2) Функции не могут быть перегружены, если их аргументы отличаются только использованием ссылок:

int OverloadFn (int param);

int OverloadFn (int &param);

3) Функции не могут быть перегружены, если их аргументы отличаются только применением модификаторов const или volatile:

int OverloadFn (int param);

int OverloadFn (const int param);

int OverloadFn (volatile int param);

 


Дата добавления: 2015-07-11; просмотров: 64 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.006 сек.)