В этой статье мы рассмотрим еще одну объектно-ориентированную концепцию, которая упрощает работу с операторами. То есть мы будем вдаваться в подробности об Операторе Перегрузка в C ++ . Следующие указатели будут рассмотрены в этой статье,
- Перегрузка в C ++
- Типы перегрузки в C ++
- Почему используется перегрузка оператора?
- Реализация перегрузки оператора в C ++
- Типы подходов к перегрузке
- Перегрузка унарных операторов
- Перегрузка бинарных операторов
Итак, давайте начнем с этой статьи о перегрузке операторов в C ++.
Перегрузка в C ++
стек и куча памяти в java
Если мы создаем два или более члена одного и того же класса с одинаковым именем, но разными по количеству или типу параметра, это называется перегрузкой C ++.
В C ++ мы можем перегрузить:
- методы
- конструкторы
- индексированные свойства
Это потому, что у этих членов есть только параметры.
Продолжаем читать статью о перегрузке операторов в C ++.
Типы перегрузки в C ++
- Перегрузка функций
- Перегрузка оператора
Продолжаем читать статью о перегрузке операторов в C ++.
Почему используется перегрузка оператора?
Программы на C ++ можно писать без знания перегрузки операторов. Кроме того, операторы широко используются программистами, чтобы сделать программу интуитивно понятной. Например,
Мы можем заменить код следующим образом:
расчет = сложить (разделить (a, b), умножить (a, b))
Для уравнения
расчет = (a / b) + (a * b)
Перегрузка операторов обеспечивает простой и легкий способ разработки новых определений для большинства операторов в C ++. Обладая достаточными знаниями, мы можем почти создать новый собственный язык, творчески используя методы перегрузки функций и операторов. Мы можем перегрузить все операторы C ++, кроме следующих:
● Оператор области действия (: :)
● Оператор размера (Sizeof)
● селектор элементов (.)
● селектор указателя на член (*)
● тернарный оператор (? :)
Синтаксис перегрузки оператора
return_type имя_класса:: operator op (список_аргументов) {// тело функции}
Где возвращаемый тип - это тип значения, возвращаемого функцией. class_name - это имя класса.
Продолжаем читать статью о перегрузке операторов в C ++.
Реализация перегрузки оператора в C ++
Для перегрузки операторная функция должна быть нестатической (функция-член) или дружественной функцией. Функцию перегрузки оператора можно применить к функции-члену, если левый операнд является объектом этого класса, но если левый операнд отличается, то функция перегрузки оператора должна быть определена как функция, не являющаяся членом.
Функцию перегрузки оператора можно сделать функцией друга, если она требует доступа к закрытым и защищенным членам класса. Например, оператор op - это операторная функция, где op - это перегружаемый оператор, а оператор - ключевое слово. Перегрузка оператора может быть достигнута путем реализации функции, которая может быть функцией-членом, функцией, не являющейся членом, или функцией друга.
В чем разница между операторными функциями и обычными функциями?
Функции оператора такие же, как и обычные функции. Единственное отличие состоит в том, что имя операторной функции всегда представляет собой ключевое слово оператора, за которым следует символ оператора, а операторные функции вызываются при использовании соответствующего оператора.
Продолжаем читать статью о перегрузке операторов в C ++.
как установить путь в Java
Типы подходов к перегрузке
Перегрузка оператора может быть выполнена тремя способами:
- Перегрузка унарного оператора.
- Перегрузка бинарного оператора.
- Перегрузка бинарного оператора с помощью дружественной функции.
Продолжаем читать статью о перегрузке операторов в C ++.
Перегрузка унарного оператора
Рассмотрим унарный оператор «-». Для унарного оператора минус требуется только один операнд. Мы знаем, что этот оператор меняет знак операнда при применении к базовой переменной данных. Давайте посмотрим, как перегрузить этот оператор, чтобы его можно было применять к объекту почти так же, как он применяется к переменной типа int или float. Унарный минус, применяемый к объекту, должен уменьшать каждый из его элементов данных.
Пример:
#include using namespace std class Height {public: // Member Objects int feet, inch // Конструктор для инициализации значения объекта Height (int f, int i) {feet = f inch = i} // Перегрузка оператора (-) для выполнить декремент // операцию объекта высоты void operator- () {feet- inch- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <Вывод:
Пояснение:
В приведенном выше примере мы перегружаем унарный оператор «-», чтобы выполнить декремент в двух переменных класса Height. Мы передаем конструктору два параметра и сохраняем их значения в переменных ft и inch. Затем мы определяем функцию перегрузки оператора (void operator- ()
), в котором две переменные уменьшаются на одну позицию.
Когда мы пишем -h1, он вызывает функцию перегрузки оператора и уменьшает значения, переданные конструктору.Продолжаем читать статью о перегрузке операторов в C ++.
Перегрузка двоичного оператора
Это перегрузка оператора, работающего с двумя операндами. Давайте возьмем тот же пример класса Height, но на этот раз добавим два объекта Height h1 и h2.
Пример:
#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Оператор перегрузки (+) для выполнения добавление // объекта на два расстояния с использованием бинарного оператора Height operator + (Height & d2) // Вызов по ссылке {// Создание объекта для возврата высоты h3 // Выполните сложение футов и дюймов h3.feet = feet + d2.feet h3. inch = inch + d2.inch // Вернуть получившийся объект return h3}} int main () {Height h1 (3, 7) Height h2 (6, 1) Height h3 // Использовать перегруженный оператор h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 }Вывод:
Пояснение:
Оператор высоты + (Высота & h2), здесь return_type функции является классом Height, поэтому он возвращает объект h3 класса Height. В строке h3 = h1 + h2 h1 вызывает операторную функцию своих объектов классов и принимает h2 в качестве параметра, затем мы применяем h3.feet = feet + d2.feet и h3.inch = inch + d2.inch, который сохраняет сумма значений переменных футов и дюймов в переменных, связанных с объектом h3.
Когда оператор «h3 = h1 + h2» вызывает перегруженную оператором функцию, объект h1 берет на себя ответственность за вызов функции, а h2 играет роль аргумента, который передается функции. Вышеупомянутый оператор вызова эквивалентен h3 = h1.operator + (h2), поэтому доступ к элементу данных h2 осуществляется напрямую, а к элементу данных h2 (который передается в качестве аргумента) осуществляется доступ с помощью оператора точки.почему я должен изучать sqlПравила перегрузки оператора
- Только существующие операторы могут быть перегружены, а новые операторы не могут быть перегружены
- Перегруженный оператор должен содержать хотя бы один операнд пользовательского типа данных.
- Мы не используем функцию друга для перегрузки определенных операторов. Однако функции-члены могут использоваться для перегрузки этих операторов.
- Когда унарные операторы перегружаются через функцию-член, они не принимают явных аргументов, но, если они перегружены дружественной функцией, они принимают один аргумент.
- Когда бинарные операторы перегружаются через функцию-член, они принимают один явный аргумент, а если они перегружаются через функцию друга, они принимают два явных аргумента.
На этом мы подошли к концу статьи о «Перегрузке операторов в C ++». Если вы хотите узнать больше, посетите обучение Java от Edureka, надежной компании, занимающейся онлайн-обучением. Эдурека Курсы предназначены для обучения как основным, так и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.
Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.