16.3 О перегрузке функций и операций
Перегрузкой ( англ. overloading ) называется использование функций с одинаковыми именами, но различными аргументами.
Компилятор находит нужную функцию по типу фактических параметров при вызове.
Если у двух функций одинаковые имена и параметры, а различны только типы функций, то перегрузка невозможна.
Цель перегрузки состоит в том, чтобы функции с одинаковыми именами
по-разному выполнялась при обращении к ним с различающимися по типам и количеству аргументами. Например, для float x и complex z имеем разные алгоритмы вычисления значений exp(x) и exp (z) и разные типы возвращаемых значений - double и complex соответственно. Многие стандартные функции, как и exp, являются перегруженными. Конструкторы классов также обычно являются перегруженными функциями. Пример перегруженных функций:
# include < iostream.h >
# include < conio.h >
int f (int a ) { return a; }
int f ( int a, float b ) { cout << b <<endl ; return (int) (a*b) ; }
void main ( )
{ cout << f ( 4) << endl << f ( 3, 1.9) ; getch( ); }
Здесь будут вызываться разные функции, хотя их имена совпадают.
Перегрузкой операций называют возможность распространения действия стандартных операций ( например, + - * ) на нестандартные для них операнды. Другими словами, перегрузка операции есть назначение ей другого действия.
Все операции с комплексными числами перегружены и выполняются по правилам, отличным от правил операций для обычных чисел. Нестандартные правила для операций с комплексными числами описываются в классе complex.
Перегружены также операции для работы со строками класса string. Например,
знак + (плюс) для строк означает операцию конкатенации, т.е. соединения строк:
string a ("aa"), b ("bb"), c ("vvvvvv"); c = a + b ; cout << c <<endl;
При выполнении этого фрагмента получим на экране строку
aabb
Возможно описание перегрузки операций в тексте программы. Для этого используются специальные подпрограммы, называемые операциями-функциями, заголовки которых содержат ключевое слово operator и знак операции после этого служебного слова.
Лекция 17 Введение в систему BUILDER
- 10.3 Операторы управления
- 10. 4 Оператор мультиветвления switch
- 10.6 Применение функции printf для форматирования
- 11.1 Графические программы
- 11.2 Построение символьного графика
- 11.4 Построение графика в графическом режиме
- 12.1 Передача данных для построения графика в MathCad
- 12.4 Указатели
- 12.5 Описание указателей
- 12.6 Указатели для массивов и строк
- 13.3 Оператор динамического выделения памяти new
- Void main ( ) {
- Void tab( ); };
- Void main ( ) {
- 15.1 Класс объектов, элементы класса
- 15.2 Доступ к элементам класса
- 15.3 Вызов элементов класса
- 15.4 Конструкторы классa
- 15.5 Пример класса Tkplk
- 16.1 Наследование
- 16.2 Полиморфизм
- 16.3 О перегрузке функций и операций
- 17. 1 Среда программирования и библиотека vcl
- 17.2 Консольное приложение в Builder
- При выполнении лабораторных работ в дисплейном классе используется
- 17.5 Вид экрана в builder
- 17.6 Работа с проектом в системе Builder
- 18.1 Редактор кода
- 18.4 Пример запроса, ввода, вывода для Win -программы