C ++

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

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

Что такое оператор?

Оператор - это символ, который указывает компилятору выполнить определенную операцию. Например, в C ++ есть различные типы операторов, такие как арифметические операторы, логические операторы, реляционные операторы, операторы присваивания, побитовые операторы и т. Д.

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

Язык C ++ позволяет программистам придавать операторам особое значение. Это означает, что вы можете переопределить оператор для пользовательских типов данных в C++. Например, «+» используется для добавления встроенных типов данных, таких как int, float и т. Д. Чтобы добавить два типа пользовательских данных, необходимо перегрузить оператор «+».

Синтаксис для перегрузки оператора

C ++ предоставляет специальную функцию под названием «оператор» для перегрузки оператора. Ниже приводится синтаксис перегрузки оператора:

класс sampleClass


Публичный:
символ оператора returnType (аргументы)



;

Здесь «оператор» - это ключевое слово, а «символ» - это оператор, который мы хотим перегрузить.

Примеры

Теперь, когда вы понимаете общую концепцию перегрузки операторов, давайте рассмотрим несколько рабочих примеров программ, чтобы вы поняли эту идею более конкретно. Мы рассмотрим следующие примеры:

  1. Пример 1: перегрузка унарного оператора (1)
  2. Пример 2: перегрузка унарного оператора (2)
  3. Пример 3: Перегрузка двоичного оператора
  4. Пример 4: Перегрузка оператора отношения

Пример 1: перегрузка унарного оператора (1)

В этом примере мы продемонстрируем, как унарный оператор может быть перегружен в C++. Мы определили класс «Square_Box» и общедоступные функции «operator ++ ()» и «operator ++ (int)», чтобы перегрузить как префиксные, так и постфиксные операторы приращения. В функции main () мы создали объект mySquare_Box1.Затем мы применили операторы префикса и постфикса к объекту «mySquare_Box1», чтобы продемонстрировать перегрузку унарного оператора.

#включать
используя пространство имен std;
класс Square_Box

частный:
длина поплавка;
ширина поплавка;
высота поплавка;
общественность:
Квадратная коробка()
Square_Box (float l, float w, float h)

длина = l;
ширина = ш;
высота = h;

// Перегрузка оператора - префиксный оператор "++"
недействительный оператор ++ ()

длина ++;
ширина ++;
высота ++;

// Перегрузка оператора - постфиксный оператор "++"
недействительный оператор ++ (число)

длина ++;
ширина ++;
высота ++;

недействительный вывод ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
возврат 0;

Пример 2: перегрузка унарного оператора (2)

Это еще один пример, в котором мы продемонстрируем, как унарный оператор может быть перегружен в C++. Мы определили класс «Square_Box» и общедоступные функции «operator - ()» и «operator - (int)», чтобы перегрузить как префиксные, так и постфиксные операторы декремента. В функции main () мы создали объект mySquare_Box1. Затем мы применили операторы префиксного и постфиксного декремента к объекту «mySquare_Box1».

#включать
используя пространство имен std;
класс Square_Box

частный:
длина поплавка;
ширина поплавка;
высота поплавка;
общественность:
Квадратная коробка()
Square_Box (float l, float w, float h)

длина = l;
ширина = ш;
высота = h;

// Перегрузка оператора - префиксный оператор "-"
оператор void - ()

длина--;
ширина--;
высота--;

// Перегрузка оператора - постфиксный оператор "-"
оператор void - (int)

длина--;
ширина--;
высота--;

недействительный вывод ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
возврат 0;

Пример 3: Перегрузка двоичного оператора

Теперь мы рассмотрим пример перегрузки бинарного оператора. Синтаксис перегрузки бинарного оператора будет несколько отличаться от перегрузки унарного оператора. В этом примере мы перегрузим оператор «+», чтобы добавить два объекта «Square_Box».

#включать
используя пространство имен std;
класс Square_Box

частный:
длина поплавка;
ширина поплавка;
высота поплавка;
общественность:
Квадратная коробка()
Square_Box (float l, float w, float h)

длина = l;
ширина = ш;
высота = h;

// Перегрузка оператора - оператор "+"
Оператор Square_Box + (const Square_Box & obj)

Square_Box temp;
темп.длина = длина + объект.длина;
темп.ширина = ширина + объект.ширина;
темп.высота = высота + объект.высота;
возвратная температура;

недействительный вывод ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0), mySquare_Box2 (2.0, 3.0, 5.0), результат;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.выход();
результат = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
результат.выход();
возврат 0;

Пример 4: Перегрузка оператора отношения

Теперь мы рассмотрим пример перегрузки реляционного оператора. Синтаксис перегрузки реляционного оператора аналогичен синтаксису перегрузки бинарного оператора. В этом примере мы перегружаем «<” and “>», Применяемые к объектам« Square_Box ».

#включать
используя пространство имен std;
класс Square_Box

частный:
длина поплавка;
ширина поплавка;
высота поплавка;
общественность:
Квадратная коробка()
Square_Box (float l, float w, float h)

длина = l;
ширина = ш;
высота = h;

// Перегрузка оператора - "<" operator
оператор bool < (const Square_Box& obj)

если (длина < obj.length)
вернуть истину;
еще
вернуть ложь;

// Перегрузка оператора - оператор ">"
Оператор bool> (const Square_Box & obj)

если (длина> obj.длина)
вернуть истину;
еще
вернуть ложь;

недействительный вывод ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (2.0, 3.0, 5.0), mySquare_Box2 (4.0, 6.0, 8.0);
результат bool;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.выход();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.выход();
результат = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
возврат 0;

Заключение

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

Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...
Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...