Що таке перевантаження в C ++?

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

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

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

Як працює перевантаження в C ++?

  • Перевантаження функцій: Це дозволяє нам визначити функцію з однойменною назвою, але вона розрізняє функції залежно від типу переданих їм параметрів або кількості переданих їм параметрів. Отже, всі функції матимуть однакове ім'я, але матимуть або різний тип даних, або будуть мати різну кількість параметрів, переданих йому. Коли функція викликається, компілятор вибере функцію з типом відповідності параметра та кількістю аргументів. Тепер його розробники можуть вибрати, яку функцію викликати відповідно до вимог. Вони можуть вибрати відповідну функцію, передавши параметри, дотримуючись правил.
  • Перевантаження оператора: це дозволяє операторам працювати за визначеними користувачем типами даних, тобто класами. Існуючі оператори перевантажені і їм надається потужність працювати над визначеним користувачем класом та об'єктами. Перевантаження оператора досягається шляхом визначення функції спеціальним найменуванням. Функція матиме ім'я "оператор", а потім символ оператора. Ми можемо використовувати символ оператора безпосередньо на визначеному користувачем типі даних і виконувати операцію. Необхідні дії або операції визначені нами в цій спеціальній функції. За допомогою перевантаження оператора ми можемо виконувати операції різного типу над одним типом даних.

Типи перевантаження в C ++

Функція Перевантаження може бути досягнуто в будь-якому випадку з точки зору використання параметрів. Коли ми говоримо про використання параметрів, на які він посилається, тип параметрів або кількість параметрів або послідовність параметрів. Отже, функція calc (int x, float y), що має параметри (int x, float y), відрізняється від функції, визначеної як calc (float x, int y), які мають різні параметри з різним типом даних.

Існує ряд типів, в яких можна досягти перевантаження функцій. Подивимося простий приклад перевантаження функцій у C ++.

#include
using namespace std;
class Display (
public:
static void show (char message() ) (
cout<< "Only Message:" << message << endl;
)
static void show (int messageId, char message()) (
cout<< "Message with Id:";
cout << messageId << " Message:" << message << endl;
)
);
int main (void) (
Display obj;
char message() = "Welcome";
int messageId = 10;
obj.show(message); //calling overloaded function with 1 parameter
obj.show(messageId, message);//calling overloaded function with 2 parameters
return 0;
)

Тут ми маємо клас Display, який має перевантажений метод показу. Метод show буде викликаний залежно від аргументів, переданих йому.

Вихід:

Лише повідомлення: Ласкаво просимо

Повідомлення з Id: 10 Повідомлення: Ласкаво просимо

Перевантаження оператора може бути досягнуто майже на всіх вбудованих типах даних, доступних у C ++. Не існує таких різних типів перевантаження оператора, але підходи можуть бути різними, які використовуються для досягнення перевантаження оператора. Такі оператори, як Unary, Binary, Relational, Assignment тощо можуть бути перевантажені на C ++.

Подивимось простий приклад перевантаження оператора ++. У цьому прикладі замість примітивного типу даних ми будемо використовувати оператор ++ на визначеному користувачем об’єкті класу.

#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)
#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)

Отже, у нас є об’єкт, початкова висота якого буде встановлена ​​на рівні 80, і буде збільшена на 5, коли ми зателефонуємо ++-оператору над ним.

Вихід:

Висота велосипеда: 80
Висота велосипеда: 85

Правила перевантаження в C ++

Нижче наведено різні правила перевантаження C ++ наступним чином:

Правила перевантаження функції

  • При перевантаженні функції функція повинна відрізнятися за типом даних, кількістю або послідовністю параметрів. Він не може відрізнятися просто на основі типу повернення функції.

Правила перевантаження оператора

  • Перевантажуватися можуть лише вбудовані оператори, нові оператори не можуть бути перевантажені.
  • Є чотири оператори, яких неможливо перевантажити, це такі . (вибір членів), :: (роздільна здатність області), . * (вибір члена за допомогою вказівника на функцію) та ?: (потрійний оператор).
  • Перевантажений оператор буде містити щонайменше один операнд визначеного користувачем типу даних.
  • Є певні оператори, які не можуть бути перевантажені за допомогою функції friend, але вони можуть бути перевантажені як член-функція.

Висновок

Отже, перевантаження в C ++ - це унікальна особливість, яка надає нам численні переваги. В основному існує два типи перевантаження, тобто функціональне перевантаження та перевантаження оператора. Перевантаження функцій покращує читабельність коду, зберігаючи те саме ім’я для тієї ж дії. Перевантаження оператора дозволяє переосмислити існуючу функціональність операторів, тим самим надаючи їм особливого значення. Обидва дуже корисні при програмуванні на C ++.

Рекомендовані статті

Це посібник із перевантаження в C ++. Тут ми обговорюємо його роботу, правила та два типи перевантаження в c ++, тобто функцію перевантаження та перевантаження оператора. Ви також можете переглянути наступну статтю, щоб дізнатися більше -

  1. Перевантаження в PHP
  2. Копіювання конструктора в C ++
  3. Перевантаження проти перекриття
  4. Заява про переключення в C ++
  5. Перевантаження в Java
  6. Перевантаження Python