Читайте также:
|
|
В программах, написанных на языке С++, возможно существование нескольких различных функций, имеющих одно имя. При этом одноименные функции обязательно должны отличаться числом и/или типом своих аргументов. Такие функции называются перегруженными.
Для того, чтобы перегрузить функцию, необходимо задать все требуемые варианты ее реализации. Компилятор автоматически выбирает правильный вариант вызова согласно числу и типу аргументов. Тип возвращаемого значения при перегрузке большой роли не играет.
Перегруженные функции позволяют упростить программу, допуская обращение к одному имени для выполнения близких по смыслу, (но, возможно, алгоритмически различных) действий.
Пример 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 ¶m);
3) Функции не могут быть перегружены, если их аргументы отличаются только применением модификаторов const или volatile:
int OverloadFn (int param);
int OverloadFn (const int param);
int OverloadFn (volatile int param);
Дата добавления: 2015-07-11; просмотров: 64 | Нарушение авторских прав