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;
ширина = w;
висота = год;

// Перевантаження оператора - оператор префікса "++"
оператор void ++ ()

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

// Перевантаження оператора - оператор постфіксу "++"
оператор void ++ (int)

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

вихід порожнечі ()

кут << "\tLength = " << length << endl;
кут << "\tWidth = " << width << endl;
кут << "\tHeight = " << height << endl;
кут << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
mySquare_Box1 ++;
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
++mySquare_Box1;
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
повернути 0;

Приклад 2: Одинарне перевантаження оператора (2)

Це ще один приклад, в якому ми продемонструємо, як одинарний оператор може бути перевантажений в C++. Ми визначили клас “Square_Box” та публічні функції “operator - ()” та “operator - (int)”, щоб перевантажити оператори зменшення префіксу та postfix. У функції “main ()” ми створили об’єкт “mySquare_Box1”. Потім ми застосували оператори зменшення префіксів та постфіксів до об’єкта “mySquare_Box1”.

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

приватний:
довжина поплавка;
ширина поплавка;
висота поплавка;
публічний:
Квадратна коробка ()
Square_Box (float l, float w, float h)

довжина = l;
ширина = w;
висота = год;

// Перевантаження оператора - оператор префікса "-"
оператор void - ()

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

// Перевантаження оператора - "-" оператор постфіксу
оператор void - (int)

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

вихід порожнечі ()

кут << "\tLength = " << length << endl;
кут << "\tWidth = " << width << endl;
кут << "\tHeight = " << height << endl;
кут << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
mySquare_Box1--;
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
--mySquare_Box1;
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
повернути 0;

Приклад 3: Перевантаження двійкового оператора

Тепер ми розглянемо приклад перевантаження двійкового оператора. Синтаксис для перевантаження бінарних операторів буде дещо відрізнятися від унарного перевантаження оператора. У цьому прикладі ми перевантажимо оператор “+”, щоб додати два об’єкти “Square_Box”.

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

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

довжина = l;
ширина = w;
висота = год;

// Перевантаження оператора - оператор "+"
Оператор Square_Box + (const Square_Box & obj)

Температура Square_Box;
темп.довжина = довжина + obj.довжина;
темп.width = ширина + obj.ширина;
темп.висота = висота + об'єкт.висота;
повернути темп;

вихід порожнечі ()

кут << "\tLength = " << length << endl;
кут << "\tWidth = " << width << endl;
кут << "\tHeight = " << height << endl;
кут << endl;

;
int main ()

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

Приклад 4: Реляційне перевантаження оператора

Тепер ми розглянемо приклад перевантаження реляційного оператора. Синтаксис для реляційного перевантаження оператора подібний до синтаксису перевантаження бінарного оператора. У цьому прикладі ми перевантажимо “<” and “>”, Щоб оператори застосовувались до об’єктів“ Square_Box ”.

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

приватний:
довжина поплавка;
ширина поплавка;
висота поплавка;
публічний:
Квадратна коробка ()
Square_Box (float l, float w, float h)

довжина = l;
ширина = w;
висота = год;

// Перевантаження оператора - "<" operator
оператор bool < (const Square_Box& obj)

якщо (довжина < obj.length)
повернути істинно;
ще
повернути false;

// Перевантаження оператора - ">" оператор
оператор bool> (const Square_Box & obj)

if (length> obj.довжина)
повернути істинно;
ще
повернути false;

вихід порожнечі ()

кут << "\tLength = " << length << endl;
кут << "\tWidth = " << width << endl;
кут << "\tHeight = " << height << endl;
кут << endl;

;
int main ()

Square_Box mySquare_Box1 (2.0, 3.0, 5.0), mySquare_Box2 (4.0, 6.0, 8.0);
результат булу;
кут << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.вихід ();
кут << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.вихід ();
результат = mySquare_Box1 < mySquare_Box2;
кут << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
кут < mySquare_Box2 = " << result << endl;
повернути 0;

Висновок

C ++ - це універсальна та гнучка мова програмування, яка широко використовується в різних доменах. Ця мова програмування підтримує поліморфізм як під час компіляції, так і під час виконання. У цій статті показано, як виконувати перевантаження оператора в C++. Це дуже корисна функція C ++, яка додає додаткові зусилля для розробника для визначення оператора для перевантаження, але це, безумовно, полегшує життя для користувача класу.

5 найкращих аркадних ігор для Linux
В наш час комп’ютери - це серйозні машини, що використовуються для ігор. Якщо ви не можете отримати новий високий бал, ви зрозумієте, що я маю на уваз...
Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...
Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...