Що таке Оператор?
Оператор - це символ, який вказує компілятору на виконання певної операції. Наприклад, в C ++ існують різні типи операторів, такі як арифметичні оператори, логічні оператори, реляційні оператори, оператори присвоєння, побітові оператори тощо.
Що таке перевантаження оператора?
Мова C ++ дозволяє програмістам надавати операторам особливих значень. Це означає, що ви можете перевизначити оператор для визначених користувачем типів даних у C++. Наприклад, “+” використовується для додавання вбудованих типів даних, таких як int, float тощо. Щоб додати два типи визначених користувачем даних, необхідно перевантажити оператор “+”.
Синтаксис для перевантаження оператора
C ++ забезпечує спеціальну функцію, яка називається "оператор" для перевантаження оператора. Нижче наведено синтаксис перевантаження оператора:
клас sampleClass..
Публічний:
символ оператора returnType (аргументи)
..
..
;
Тут „оператор” - це ключове слово, а „символ” - це оператор, який ми хочемо перевантажити.
Приклади
Тепер, коли ви розумієте загальну концепцію перевантаження оператора, давайте пройдемо кілька робочих прикладних програм, щоб ви могли конкретніше зрозуміти цю ідею. Ми розглянемо такі приклади:
- Приклад 1: Одинарне перевантаження оператора (1)
- Приклад 2: Одинарне перевантаження оператора (2)
- Приклад 3: Перевантаження бінарного оператора
- Приклад 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 ++, яка додає додаткові зусилля для розробника для визначення оператора для перевантаження, але це, безумовно, полегшує життя для користувача класу.