Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Перегрузка оператора C++ с примерами

Что такое перегрузка оператора?

Использование перегрузки оператора в C++ вы можете указать более одного значения для оператора в одной области. Цель перегрузки оператора — предоставить особое значение оператора для пользовательского типа данных.

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

Из этого руководства по C++ вы узнаете:

Синтаксис

Чтобы перегрузить оператор C++, вы должны определить специальную функцию внутри класса следующим образом:

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

Вот объяснение приведенного выше синтаксиса:

Пример 1:

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включение файла заголовка iostream в наш код для использования его функций.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Создайте класс TestClass.
  4. Используйте модификатор приватного доступа, который помечает член класса как доступный приватно.
  5. Создайте счетчик целочисленной переменной. Эта переменная будет доступна в частном порядке.
  6. Используйте модификатор общего доступа, который помечает член класса как доступный для частных лиц.
  7. Используйте конструктор класса, чтобы инициализировать счетчик переменной равным 5.
  8. Перегрузите значение оператора —.
  9. Оператор уменьшит значение переменной x на 1.
  10. Конец раздела перегрузки операторов. Оператору присвоено новое имя.
  11. Определение функции Display().
  12. Печать значения переменной count вместе с другим текстом на консоли при вызове функции Display(). } отмечает конец тела функции Display().
  13. Конец тела класса.
  14. Вызовите функцию main(). Логика программы должна быть добавлена ​​в эту функцию.
  15. Создайте экземпляр класса TestClass и назовите его tc.
  16. Это вызовет функцию void operator –().
  17. Используйте позицию класса TestClass для вызова функции Display().
  18. Функция должна возвращать значение после успешного завершения.
  19. Конец тела функции main().

Различные подходы к перегрузке операторов в C++

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

  1. Функция члена
  2. Функция для нечленов
  3. Функция друга

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

Могут ли быть перегружены все операторы C++?

Нет. Существуют операторы C++, которые нельзя перегружать.

К ним относятся:

Что нужно помнить:

  1. С помощью перегрузки оператора вы можете переопределить способ работы оператора только для определенных пользователем типов (объектов, структур). Его нельзя использовать для встроенных типов (float, char, int и т. д.).
  2. Операторы =и &C++ по умолчанию перегружены. Например, вы можете напрямую копировать объекты одного и того же класса с помощью оператора =.
  3. Приоритет оператора не влияет на ассоциативность и приоритет операторов. Однако вы можете изменить порядок оценки, используя круглые скобки.
  4. Есть четыре оператора, которые нельзя перегружать в C++. К ним относятся оператор разрешения области (::), оператор выбора элемента (.), оператор выбора элемента с помощью указателя на оператор функции (.*) и тернарный оператор (?:).

Правила перегрузки оператора:

Вот правила перегрузки оператора:

Как перегрузить оператора:

Пример 1:

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

Вывод:

<сильный>

Вот скриншот кода:

<сильный>

Пояснение кода:

  1. Включение файла заголовка iostream в наш код для использования его функций.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Создайте класс с именем OperatorOverload.
  4. Используйте модификатор приватного доступа, который помечает член класса как доступный приватно.
  5. Создайте целочисленную переменную x. Эта переменная будет доступна в частном порядке.
  6. Используйте модификатор общего доступа, который помечает член класса как доступный для частных лиц.
  7. Используйте конструктор класса, чтобы инициализировать переменную x значением 10.
  8. Перегружать значение оператора ++.
  9. Оператор увеличит значение переменной x на 2.
  10. Конец раздела перегрузки операторов. Оператору присвоено новое имя.
  11. Вызов функции Print().
  12. Вывести значение переменной x вместе с другим текстом на консоль при вызове функции Print().
  13. Конец тела функции Print().
  14. Конец тела класса.
  15. Вызовите функцию main(). Логика программы должна быть добавлена ​​в эту функцию.
  16. Создайте экземпляр класса OperatorOverload с именем ov.
  17. Это вызовет функцию void operator ++().
  18. Используйте позицию класса OperatorOverload для вызова функции Print().
  19. Функция должна возвращать значение после успешного завершения.
  20. Конец тела функции main().

Пример 2:

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включение заголовочного файла iostream в нашу программу для использования его функций.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Создайте класс TestClass. { отмечает начало тела класса.
  4. Используйте модификатор доступа private, чтобы пометить переменные как частные, что означает, что доступ к ним возможен только из класса.
  5. Определите две целочисленные переменные, real и over.
  6. Используйте модификатор доступа public, чтобы пометить конструктор как общедоступный, что означает, что он будет доступен даже за пределами класса.
  7. Создание конструктора класса и инициализация переменных.
  8. Инициализируйте значение переменной real.
  9. Инициализируйте значение переменной.
  10. Конец тела конструктора.
  11. Переопределить значение оператора +.
  12. Создайте результат типа данных типа TestClass.
  13. Используйте оператор + с комплексными числами. Эта строка добавит действительную часть числа к действительной части другого числа.
  14. Используйте оператор + с комплексными числами. Эта строка добавит мнимую часть числа к мнимой части другого числа.
  15. При успешном выполнении программа вернет значение переменной result.
  16. Конец определения нового значения оператора +, то есть перегрузки.
  17. Вызовите метод print().
  18. Распечатайте новый комплексный номер после добавления в консоль.
  19. Конец тела функции print().
  20. Конец тела класса TestClass.
  21. Вызов функции main().
  22. Передача значений как реальных, так и сложных частей для добавления. Первая часть с1 будет добавлена ​​к первой части с2, то есть 9+4. Вторая часть c1 будет добавлена ​​ко второй части c, то есть 5+3.
  23. Выполнение операции с использованием перегруженного оператора + и сохранение результата в переменной c3.
  24. Вывод значения переменной c3 на консоль.
  25. Конец тела функции main().

Обзор:


Язык C

  1. Передача массива в функцию в программировании на C++
  2. Перегрузка оператора Python
  3. Операторы в C++ с примером:что такое, типы и программы
  4. Цикл C++ do…while с примерами
  5. Указатели C++ с примерами
  6. Тип данных Char C++ с примерами
  7. Структура С++ с примером
  8. std::list в C++ с примером
  9. Функции C++ с примерами программ
  10. Лямбда-функции Python с ПРИМЕРАМИ