Лекция
Привет, сегодня поговорим про перегрузка операций, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое перегрузка операций , настоятельно рекомендую прочитать все из категории С++ (C plus plus).
В языке С++ определены множества операций над переменными стандартных типов, такие как +, *, / и т.д. Каждую операцию можно применить к операндам определенного типа.
К сожалению, лишь ограниченное число типов непосредственно поддерживается любым языком программирования. Например, С и С++ не позволяют выполнять операции с комплексными числами, матрицами, строками, множествами. Однако, все эти операции можно выполнить через классы в языке С++.
Рассмотрим пример.
Пусть заданы множества А и В:
А = {а1,а2,а3};
В = {a3,a4,a5},
и мы хотим выполнить операции объединения (+) и пересечения (*) множеств.
А+В = {a1,a2,a3,a4,a5}
А*В = {a3}.
Можно определить класс Set-“множество” и определить операции над объектами этого класса, выразив их с помощью знаков операций, которые уже есть в языке С++, например, + и *. Об этом говорит сайт https://intellect.icu . В результате операции + и * можно будет использовать как и раньше, а также снабдить их дополнительными функциями (объединения и пересечения). Как определить, какую функцию должен выполнять оператор: старую или новую? Очень просто – по типу операндов. А как быть с приоритетом операций? Сохраняется определенный ранее приоритет операций. Для распространения действия операции на новые типы данных надо определить специальную функцию, называемую “операция-функция” (operator-function). Ее формат:
тип_возвр_значения operator знак_операции(специф_параметров) {операторы_тела_функции}
При необходимости может добавляться и прототип:
тип_возвр_значения operator знак_операции(специф_параметров)
Если принять, что конструкция operator знак_операции есть имя некоторой функции, то прототип и определение операции-функции подобны прототипу и определению обычной функции языка С++. Определенная таким образом операция называется перегруженной (overload).
Чтобы была обеспечена явная связь с классом, операция-функция должна быть либо компонентом класса, либо она должна быть определена в классе как дружественная и у нее должен быть хотя бы один параметр типа класс (или ссылка на класс). Вызов операции-функции осуществляется так же, как и любой другой функции С++: operatorÅ .Однако разрешается использовать сокращенную форму ее вызова: aÅ b , где Å - знак операции.
В общем, мой друг ты одолел чтение этой статьи об перегрузка операций. Работы впереди у тебя будет много. Смело пиши комментарии, развивайся и счастье окажется в твоих руках. Надеюсь, что теперь ты понял что такое перегрузка операций и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории С++ (C plus plus)
Из статьи мы узнали кратко, но содержательно про перегрузка операций
Комментарии
Оставить комментарий
С++ (C plus plus)
Термины: С++ (C plus plus)