Ce este supraîncărcarea în C ++?

C ++ permite scrierea codului flexibil și ușor de înțeles folosind conceptul cunoscut ca suprasarcină. Permite realizarea diferitelor funcționalități în cadrul codului existent, cu modificări foarte minime, prin reducerea codului duplicat. Practic, există în principal două tipuri principale de supraîncărcare care sunt suportate de C ++.

C ++ ne permite să scriem funcții cu același nume, dar cu diferența de tipuri de date sau în numărul de argumente care i-au fost transmise, această caracteristică este cunoscută sub denumirea de supraîncărcare a funcției în C ++. Această caracteristică permite dezvoltatorilor să definească funcțiile cu același nume în același domeniu de aplicare. Cu același nume, funcțiile reprezintă aceeași funcționalitate, permițând astfel realizarea unui polimorfism în timp. Supraîncărcarea funcției are un avantaj că îmbunătățește lizibilitatea codului.

Există o altă caracteristică furnizată în C ++, care permite redefinirea funcționalității existente a operatorilor încorporați, care este cunoscută sub denumirea de supraîncărcare a operatorilor . Această caracteristică permite utilizarea operatorilor integrați pe tipuri definite de utilizator. Supraîncărcarea operatorului simplifică codul prin redefinirea funcționalității conform cerințelor utilizatorului. În acest articol ne vom concentra atât asupra supraîncărcării funcției, cât și asupra supraîncărcării operatorului, vom vedea detaliile acesteia și cum este utilizată în C ++.

Cum funcționează supraîncărcarea în C ++?

  • Supraîncărcarea funcțiilor: Ne permite să definim funcția cu același nume, dar distinge funcțiile în funcție de tipul de parametri care le-a fost trecut sau de numărul de parametri care le-au fost transmise. Deci, toate funcțiile vor avea același nume, dar vor avea fie un tip de date diferit, fie vor avea un număr diferit de parametri. Când funcția este apelată, compilatorul va alege funcția cu tipul de parametru care se potrivește și care va potrivi numărul de argumente. Acum, dezvoltatorii săi pot alege ce funcție să apeleze în conformitate cu cerințele. Aceștia pot alege funcția corespunzătoare trecând parametrii urmând regulile.
  • Suprasarcina operatorului: permite operatorilor să lucreze pentru tipuri de date definite de utilizator, adică clase. Operatorii existenți sunt supraîncărcați și li se oferă puterea de a opera pe clasa și obiectele definite de utilizator. Supraîncărcarea operatorului se realizează prin definirea funcției cu numele special. Funcția va avea numele de „operator” urmată de simbolul operator. Putem utiliza simbolul operator direct pe tipul de date definit de utilizator și să efectuăm operația. Acțiunea sau operațiunea necesară este definită de acea funcție specială de către noi. Prin intermediul supraîncărcării operatorului, putem efectua operațiuni de diferite tipuri pe același tip de date.

Tipuri de supraîncărcare în C ++

Funcție Supraîncărcarea poate fi realizată oricum în ceea ce privește utilizarea parametrilor. Când spunem utilizarea parametrilor la care se referă, tipul parametrilor sau numărul de parametri sau secvența de parametri. Deci, funcția calc (int x, float y) având parametri (int x, float y) este diferită de o funcție definită ca calc (float x, int y) care au parametri diferiți cu tipul de date diferit.

Pot exista o serie de tipuri în care se poate realiza supraîncărcarea funcțiilor, Să vedem exemplul simplu de supraîncărcare a funcției în 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;
)

Aici, avem clasa Display care are o prezentare a metodei supraîncărcate. Metoda show va fi apelată în funcție de argumentele transmise.

ieşire:

Singur mesaj: Bine ați venit

Un mesaj cu Id: 10 Mesaj: Bine ați venit

Supraîncărcarea operatorului se poate realiza pe aproape toate tipurile de date încorporate disponibile în C ++. Nu există astfel de tipuri diferite de supraîncărcare a operatorilor, dar abordările pot fi diferite, care sunt utilizate pentru a obține supraîncărcarea operatorului. Operatori precum Unary, Binary, Relational, Assignment, etc. pot fi supraîncărcați în C ++.

Să vedem exemplul simplu de supraîncărcare a operatorului ++. În acest exemplu, în loc de tipul de date primitive, vom folosi ++ operator pe obiectul de clasă definit de utilizator.

#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;
)

Deci, avem un obiect a cărui înălțime inițială va fi setată la 80 și va fi mărită cu 5 când apelăm ++ operator peste el.

ieşire:

Înălțimea bicicletei este: 80
Înălțimea bicicletei este: 85

Reguli de suprasarcină în C ++

Mai jos sunt prezentate diferitele reguli de supraîncărcare C ++ după cum urmează:

Reguli pentru supraîncărcarea funcției

  • În cazul supraîncărcării funcțiilor, funcția trebuie să difere în funcție de tipul de date, numărul sau secvența parametrilor. Nu poate diferi doar pe baza tipului de returnare a funcției.

Reguli pentru supraîncărcarea operatorului

  • Doar operatorii încorporați pot fi supraîncărcați, noii operatori nu pot fi supraîncărcați.
  • Există patru operatori care nu pot fi supraîncărcați, aceștia sunt . (selecție membru), :: (rezoluție de aplicare), . * (selecția membrilor utilizând indicatorul pentru a funcționa) și?: (operator ternar).
  • Operatorul supraîncărcat va conține cel puțin un operand din tipul de date definit de utilizator.
  • Există anumiți operatori care nu pot fi supraîncărcați folosind funcția de prieten, dar pot fi supraîncărcați ca funcție de membru.

Concluzie

Deci, supraîncărcarea în C ++ este caracteristica unică care ne oferă multiple avantaje. Există în principal două tipuri de supraîncărcare, adică supraîncărcarea funcțiilor și supraîncărcarea operatorului. Supraîncărcarea funcției îmbunătățește lizibilitatea codului, păstrând astfel același nume pentru aceeași acțiune. Supraîncărcarea operatorului permite redefinirea funcționalității existente a operatorilor, oferindu-le astfel un sens special. Ambele sunt foarte utile în programarea în C ++.

Articole recomandate

Acesta este un ghid pentru supraîncărcare în C ++. Aici discutăm modul său de lucru, regulile și două tipuri de supraîncărcare în c ++, adică supraîncărcarea funcțiilor și supraîncărcarea operatorului. De asemenea, puteți consulta articolul următor pentru a afla mai multe -

  1. Supraîncărcarea în PHP
  2. Copiați constructorul în C ++
  3. Supraîncărcarea vs suprasolicitare
  4. Declarație de comutare în C ++
  5. Supraîncărcare în Java
  6. Supraîncărcarea Python