C ++

Supraîncărcarea funcției C ++

Supraîncărcarea funcției C ++

C ++ este un limbaj de programare flexibil de uz general. Acest limbaj de programare a fost creat inițial de Bjarne Stroustrup, un informatician danez, în 1985. C ++ acceptă polimorfismul, moștenirea și multe altele. Acest articol acoperă supraîncărcarea funcției pentru a realiza polimorfismul de compilare în limbajul de programare C ++.

Ce este o funcție?

O funcție nu este altceva decât o anumită bucată de cod care realizează o sarcină specifică pe baza intrărilor furnizate și returnează utilizatorului rezultatele solicitate sub forma unei ieșiri. Funcțiile sunt utilizate pentru a elimina codul repetitiv în bazele de coduri mari.

După definirea unei funcții, o puteți reutiliza într-un moment ulterior, fie în același program, fie într-un alt program.

Sintaxa funcției

O funcție în C ++ are următoarea sintaxă:

returnType functionName (parametru_list)

..
..
returnează return_value;

ReturnType, parameter_list și declarația return sunt opționale. O funcție în C ++ poate returna maximum o valoare. Dacă o funcție nu returnează nicio valoare, returnType trebuie definit ca fiind nul.

Ce este supraîncărcarea funcției?

În C ++, definițiile funcției multiple pot avea același nume de funcție, dar cu parametri diferiți. Aceasta se numește supraîncărcare a funcției. Cu ajutorul funcției de supraîncărcare a funcției, polimorfismul în timp de compilare poate fi realizat în C++.

Funcțiile pot fi supraîncărcate în următoarele moduri:

  1. Numărul de parametri poate fi diferit
  2. Tipul de date al parametrilor poate fi diferit
  3. Secvența parametrilor poate fi diferită

Cu toate acestea, valoarea returnată nu este luată în considerare pentru supraîncărcarea funcției. 

Următoarele funcții sunt supraîncărcate:

  1. int plus (int a, int b)
  2. adaos de float (float f, gloat g)
  3. adaos float (float f, int i)
  4. adaos float (int i, float f)
  5. int adăugare (int a, int b, int c)
  6. plus float (float f, float g, float h)

După cum puteți vedea, cu ajutorul funcției de supraîncărcare a funcției în C ++, pot exista mai multe definiții / funcționalități cu același nume de funcție și în același domeniu.

Fără funcția de supraîncărcare a funcției, ar trebui să scrieți o funcție separată [de exemplu, addition_1 (), addition_2 () etc] pentru fiecare variantă. De exemplu, poate fi necesar să scrieți suma_1 () pentru a adăuga două numere întregi, suma_2 () pentru a adăuga două flotante și așa mai departe. Cu toate acestea, după cum puteți vedea mai sus, funcția de supraîncărcare a funcției poate fi utilizată pentru a defini mai multe variante ale funcției „adăugare ()”, păstrând în același timp același nume de funcție.

Următoarele funcții nu sunt considerate a fi supraîncărcate deoarece singura diferență dintre acestea două este tipul returnat (tipul returnat nu este luat în considerare pentru supraîncărcarea funcției în C ++):

  1. int plus (int a, int b)
  2. adaos float (int a, int b)

Exemple

Acum că înțelegeți conceptul de supraîncărcare a funcției, vom trece prin câteva programe de exemplu de lucru pentru a înțelege mai clar acest concept. Vom acoperi următoarele exemple:

  1. Exemplul 1: Funcție simplă
  2. Exemplul 2: Funcție de adăugare simplă
  3. Exemplul 3: Suprasolicitarea funcției (1)
  4. Exemplul 4: Suprasolicitarea funcției (2)
  5. Exemplul 5: Suprasolicitarea funcției (3)

Primele două exemple explică cum funcționează funcțiile normale în C ++, în timp ce ultimele trei exemple demonstrează caracteristica de supraîncărcare a funcției în C++.

Exemplul 1: Funcție simplă

În acest exemplu, vom demonstra cum o funcție simplă poate fi definită și apelată în C++. Vom defini o clasă numită „Display” și o funcție publică numită „display ().”Din funcția„ main () ”, vom apela funcția„ display () ”cu ajutorul obiectului clasei„ Display ”(d).

#include
folosind spațiul de nume std;
clasa Display

public:
afișare nulă ()

cout << "Hello World!" << endl;

;
int main ()

Afișaj d;
d.afişa();
retur 0;

Exemplul 2: Funcție de adăugare simplă

În acest exemplu, vom demonstra cum să definim o funcție simplă „addition ()” în C++. Vom defini o clasă numită „DemoAdd” și o funcție publică numită „addition ().”Din funcția„ main () ”, vom apela funcția„ addition () ”cu ajutorul obiectului de clasă„ DemoAdd ”(d).

În acest exemplu, implementarea curentă a funcției „addition ()” acceptă doar doi parametri întregi. Asta înseamnă că funcția curentă „addition ()” este capabilă să adauge doar două numere întregi.

Pentru a adăuga trei numere întregi în loc de două, poate fi definită o funcție cu un nume diferit, cum ar fi „adiție_1 ()”. În C ++, o funcție poate fi supraîncărcată, ceea ce înseamnă că o altă definiție a funcției „addition ()” poate fi definită pentru a adăuga trei numere întregi și pentru a păstra același nume, i.e., "plus().”În exemplul următor, ne vom uita la modul de supraîncărcare a funcției„ addition () ”.

#include
folosind spațiul de nume std;
clasa DemoAdd

public:
int plus (int a, int b)

int rezultatul;
rezultat = a + b;
rezultatul returului;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res;
res = d.adiție (i1, i2);
cout << "Result = " << res << endl;
retur 0;

Exemplul 3: Suprasolicitarea funcției (1)

În exemplul anterior, am definit funcția „adunare ()” pentru a adăuga două numere întregi și pentru a returna rezultatul calculat. Acum, în acest exemplu, vom supraîncărca funcția „addition ()” pentru a adăuga trei numere întregi. Deci, vom putea apela funcția „adunare ()” cu două argumente întregi, precum și trei argumente întregi.

Fără funcția de supraîncărcare a funcției, ar trebui să scriem o altă funcție cu un nume diferit.

#include
folosind spațiul de nume std;
clasa DemoAdd

public:
// Prima definiție a funcției addition ()
int plus (int a, int b)

int rezultatul;
rezultat = a + b;
rezultatul returului;

// Versiunea supraîncărcată a funcției add ()
int adăugare (int a, int b, int c)

int rezultatul;
rezultat = a + b + c;
rezultatul returului;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.adiție (i1, i2); // addition () cu 2 parametri
res2 = d.adiție (i1, i2, i3); // addition () cu 3 parametri
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
retur 0;

Exemplul 4: Suprasolicitarea funcției (2)

În secțiunile anterioare ale acestui articol, ați aflat că supraîncărcarea funcției poate fi efectuată pe baza diferențelor de tip de parametru. Aici, am suprasolicitat funcția „addition ()” pe baza tipului de date al parametrului. În prima versiune a funcției de adăugare, vom adăuga două variabile de tip întreg; iar în a doua versiune, vom adăuga două variabile de tip float.

#include
folosind spațiul de nume std;
clasa DemoAdd

public:
// Prima definiție a adunării ()
int plus (int a, int b)

int rezultatul;
rezultat = a + b;
rezultatul returului;

// Definirea funcției suprasolicitate
plus float (float f, float g)

rezultatul plutitor;
rezultat = f + g;
rezultatul returului;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res1;
plutitor f1 = 10.5, f2 = 20.7, res2;
res1 = d.adiție (i1, i2); // adăugarea (int a, int b) va fi apelată
res2 = d.adaos (f1, f2); // adăugarea (float f, flat g) va fi apelată
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
retur 0;

Exemplul 5: supraîncărcare funcție (3)

În acest exemplu, funcția „addition ()” este supraîncărcată pe baza diferențelor în secvența listei de parametri. Acesta este un alt mod de a supraîncărca o funcție în C++.

#include
folosind spațiul de nume std;
clasa DemoAdd

public:
// Prima definiție a funcției funcției addition ()
adaos float (int a, float b)

rezultatul plutitor;
rezultat = (float) a + b;
rezultatul returului;

// Definirea funcției supraîncărcate a funcției add ()
adaos float (float a, int b)

rezultatul plutitor;
rezultat = a + (float) b;
rezultatul returului;

;
int main ()

DemoAdd d;
int i1 = 10;
plutitor f1 = 10.5, res1, res2;
res1 = d.adiție (i1, f1); // adăugarea (int a, float b) va fi apelată
res2 = d.adiție (f1, i1); // adăugarea (float a, int b) va fi apelată
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
retur 0;

Concluzie

C ++ este un limbaj de programare de uz general și flexibil, care este utilizat pe scară largă în diferite domenii. Acest limbaj de programare acceptă atât polimorfismul în timp de compilare, cât și cel de execuție. În acest articol, ați învățat cum să realizați polimorfismul în timp de compilare în C ++ utilizând funcția de supraîncărcare a funcției. Aceasta este o caracteristică foarte utilă în C ++, care ajută programatorii să scrie cod lizibil. Poate fi de asemenea util pentru scrierea unui cod reutilizabil.

Cele mai bune jocuri pentru a juca cu urmărirea manuală
Oculus Quest a introdus recent marea idee de urmărire manuală fără controlere. Cu un număr din ce în ce mai mare de jocuri și activități care execută ...
Cum se afișează suprapunerea OSD în aplicații și jocuri Linux pe ecran complet
Jucarea jocurilor pe ecran complet sau utilizarea aplicațiilor în modul ecran complet fără distragere vă poate elimina din informațiile relevante ale ...
Top 5 cărți de captură a jocului
Cu toții am văzut și ne-au plăcut jocurile de streaming pe YouTube. PewDiePie, Jakesepticye și Markiplier sunt doar câțiva dintre cei mai buni jucător...