Какво е претоварване в C ++?

C ++ позволява писането на гъвкав и лесен за разбиране код, като се използва концепцията, позната като Overloading. Той позволява постигането на различна функционалност в рамките на съществуващия код с много минимални промени, като по този начин се намалява дублиращият код. По принцип има два основни типа претоварване, които се поддържат от C ++.

C ++ ни позволява да пишем функции със същото име, но с разликата в типовете данни или в броя на аргументите, предадени на него, тази функция е известна като Function Overloading в C ++. Тази функция позволява на разработчиците да определят функциите със същото име в един и същ обхват. Със същото име функциите представляват една и съща функционалност, като по този начин позволяват да се постигне полиморфизъм във време на компилация. Функцията претоварване има едно предимство, че подобрява четенето на кода.

Има още една функция, предоставена в C ++, която позволява предефиниране на съществуващата функционалност на вградените оператори, известна като Operator Overloading . Тази функция позволява използването на вградени оператори на дефинирани от потребителя типове. Претоварването на оператора опростява кода чрез предефиниране на функционалността според потребителските изисквания. В тази статия ще се съсредоточим както върху претоварването на функциите, така и върху претоварването на оператора, ще видим подробностите за него и как се използва в 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;
)

Тук имаме клас Дисплей, който показва претоварен метод на показване. Методът на показване ще бъде извикан в зависимост от предадените му аргументи.

изход:

Само съобщение: Добре дошли

Съобщение с 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 ++, както следва:

Правила за претоварване на функциите

  • При претоварване на функциите функцията трябва да се различава по отношение на типа данни, броя или последователността на параметрите. Не може да се различава просто въз основа на типа връщане на функцията.

Правила за претоварване на оператора

  • Само вградени оператори могат да бъдат претоварени, новите оператори не могат да бъдат претоварени.
  • Има четири оператора, които не могат да бъдат претоварени, това са . (избор на член), :: (резолюция на обхвата), . * (избор на член с помощта на показалец за функция) и?: (терминален оператор).
  • Претовареният оператор ще съдържа поне един операнд от дефиниран от потребителя тип данни.
  • Има определени оператори, които не могат да бъдат претоварени с помощта на функцията приятел, но те могат да бъдат претоварени като функция-член.

заключение

Така че, претоварването в C ++ е уникалната функция, която ни предоставя множество предимства. Съществуват основно два вида претоварване, т.е. функционално претоварване и операторско претоварване. Функцията претоварване подобрява четливостта на кода, като по този начин запазва същото име за едно и също действие. Претоварването на оператора позволява предефиниране на съществуващата функционалност на операторите, като по този начин им се придава специално значение. И двете са много полезни при програмиране в C ++.

Препоръчителни статии

Това е ръководство за претоварване в C ++. Тук обсъждаме неговата работа, правила и два вида претоварване в c ++, т.е. претоварване на функции и претоварване на оператора. Можете също да разгледате следната статия, за да научите повече -

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