C ++

Preťaženie funkcií v C ++

Preťaženie funkcií v C ++

C ++ je flexibilný univerzálny programovací jazyk. Tento programovací jazyk pôvodne vytvoril Bjarne Stroustrup, dánsky počítačový vedec, ešte v roku 1985. Jazyk C ++ podporuje polymorfizmus, dedičnosť a ďalšie. Tento článok sa venuje preťaženiu funkcií na dosiahnutie polymorfizmu v čase kompilácie v programovacom jazyku C ++.

Čo je to funkcia?

Funkcia nie je nič iné ako konkrétny kus kódu, ktorý vykonáva konkrétnu úlohu na základe poskytnutých vstupov, a vráti požadované výsledky používateľovi vo forme výstupu. Funkcie sa používajú na elimináciu opakujúceho sa kódu vo veľkých kódových základniach.

Po definovaní funkcie ju môžete neskôr znova použiť, a to buď v rovnakom programe, alebo v inom programe.

Syntax funkcie

Funkcia v C ++ má nasledujúcu syntax:

returnType functionName (zoznam_parametrov)



návrat návratová hodnota;

Návrat returnType, parameter_list a návrat sú voliteľné. Funkcia v C ++ môže vrátiť maximálne jednu hodnotu. Ak funkcia nevráti žiadnu hodnotu, returnType by mal byť definovaný ako neplatný.

Čo je to preťaženie funkcií?

V C ++ môže mať viac definícií funkcií rovnaký názov funkcie, ale s rôznymi parametrami. Toto sa nazýva preťaženie funkcie. Pomocou funkcie preťaženia funkcií je možné v C dosiahnuť polymorfizmus kompilácie++.

Funkcie je možné preťažiť nasledujúcimi spôsobmi:

  1. Počet parametrov môže byť rôzny
  2. Dátový typ parametrov môže byť rôzny
  3. Postupnosť parametrov môže byť odlišná

Návratová hodnota sa však pri preťažení funkcie neberie do úvahy. 

Nasledujúce funkcie sú preťažené:

  1. pridanie int (int a, int b)
  2. doplnenie float (float f, gloat g)
  3. doplnenie float (float f, int i)
  4. doplnenie float (int i, float f)
  5. pridanie int (int a, int b, int c)
  6. doplnenie float (float f, float g, float h)

Ako vidíte, pomocou funkcie preťaženia funkcií v C ++ môže existovať viac definícií / funkcií s rovnakým názvom funkcie a v rovnakom rozsahu.

Bez funkcie preťaženia funkcií by ste pre každú variáciu museli napísať samostatnú funkciu [napríklad dodatok_1 (), dodatok_2 () atď.). Možno budete musieť napísať add_1 (), aby ste pridali dve celé čísla, addition_2 (), aby ste pridali dva plaváky, atď.). Ako však vidíte vyššie, funkciu preťaženia funkcie je možné použiť na definovanie viacerých variácií funkcie „addition ()“ pri zachovaní rovnakého názvu funkcie.

Nasledujúce funkcie sa nepovažujú za preťažené, pretože jediný rozdiel medzi týmito dvoma je návratový typ (návratový typ sa pre preťaženie funkcií v C ++ nepovažuje):

  1. pridanie int (int a, int b)
  2. doplnenie float (int a, int b)

Príklady

Teraz, keď rozumiete konceptu preťaženia funkcií, prejdeme niekoľko pracovných príkladov programov, aby sme tomuto konceptu porozumeli jasnejšie. Uvedieme nasledujúce príklady:

  1. Príklad 1: Jednoduchá funkcia
  2. Príklad 2: Funkcia jednoduchého pridania
  3. Príklad 3: Preťaženie funkcie (1)
  4. Príklad 4: Funkčné preťaženie (2)
  5. Príklad 5: Preťaženie funkcie (3)

Prvé dva príklady vysvetľujú, ako fungujú normálne funkcie v C ++, zatiaľ čo posledné tri príklady demonštrujú funkciu preťaženia funkcií v jazyku C++.

Príklad 1: Jednoduchá funkcia

V tomto príklade si ukážeme, ako možno v C definovať a volať jednoduchú funkciu++. Definujeme triedu s názvom „Display“ a verejnú funkciu s názvom „display ().”Z funkcie„ main () “zavoláme funkciu„ display () “pomocou objektu triedy„ Display “(d).

#include
pomocou namespace std;
trieda Displej

verejné:
neplatné zobrazenie ()

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

;
int main ()

Displej d;
d.displej ();
návrat 0;

Príklad 2: Funkcia jednoduchého pridania

V tomto príklade si ukážeme, ako definovať jednoduchú funkciu „addition ()“ v jazyku C++. Definujeme triedu s názvom „DemoAdd“ a verejnú funkciu s názvom „addition ().”Z funkcie„ main () “zavoláme funkciu„ addition () “pomocou objektu triedy„ DemoAdd “(d).

V tomto príklade súčasná implementácia funkcie „addition ()“ prijíma iba dva celočíselné parametre. To znamená, že súčasná funkcia „addition ()“ je schopná pridať iba dve celé čísla.

Ak chcete pridať dve celé čísla namiesto dvoch, je možné definovať funkciu s iným názvom, napríklad „addition_1 ()“. V C ++ môže byť funkcia preťažená, čo znamená, že je možné definovať ďalšiu definíciu funkcie „addition ()“ na pridanie troch celých čísel a zachovanie rovnakého názvu, i.e., „Doplnenie ().„V nasledujúcom príklade sa pozrieme na to, ako preťažiť funkciu„ addition () “.

#include
pomocou namespace std;
trieda DemoAdd

verejné:
pridanie int (int a, int b)

int výsledok;
výsledok = a + b;
návratový výsledok;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res;
res = d.sčítanie (i1, i2);
cout << "Result = " << res << endl;
návrat 0;

Príklad 3: Preťaženie funkcie (1)

V predchádzajúcom príklade sme definovali funkciu „addition ()“ na pridanie dvoch celých čísel a vrátenie vypočítaného výsledku. Teraz v tomto príklade preťažíme funkciu „addition ()“ a pridáme tri celé čísla. Budeme teda môcť volať funkciu „addition ()“ s dvoma celočíselnými argumentmi a tiež tromi celočíselnými argumentmi.

Bez funkcie preťaženia funkcií by sme museli napísať ďalšiu funkciu s iným názvom.

#include
pomocou namespace std;
trieda DemoAdd

verejné:
// Definícia prvej funkcie sčítania ()
pridanie int (int a, int b)

int výsledok;
výsledok = a + b;
návratový výsledok;

// Preťažená verzia funkcie addition ()
pridanie int (int a, int b, int c)

int výsledok;
výsledok = a + b + c;
návratový výsledok;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.sčítanie (i1, i2); // add () s 2 parametrami
res2 = d.sčítanie (i1, i2, i3); // add () s 3 parametrami
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
návrat 0;

Príklad 4: Funkčné preťaženie (2)

V predchádzajúcich častiach tohto článku ste sa dozvedeli, že preťaženie funkcií je možné vykonať na základe rozdielov v type parametra. Tu sme preťažili funkciu „addition ()“ na základe dátového typu parametra. V prvej verzii funkcie sčítania pridáme dve premenné celočíselného typu; a v druhej verzii pridáme dve premenné typu float.

#include
pomocou namespace std;
trieda DemoAdd

verejné:
// Prvá definícia pridania ()
pridanie int (int a, int b)

int výsledok;
výsledok = a + b;
návratový výsledok;

// Definícia preťaženej funkcie
doplnenie float (float f, float g)

plavákový výsledok;
výsledok = f + g;
návratový výsledok;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res1;
float f1 = 10.5, f2 = 20.7, res2;
res1 = d.sčítanie (i1, i2); // bude sa volať prídavok (int a, int b)
res2 = d.pridanie (f1, f2); // bude sa volať prídavok (float f, flat g)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
návrat 0;

Príklad 5: Preťaženie funkcie (3)

V tomto príklade je funkcia „addition ()“ preťažená na základe rozdielov v postupnosti zoznamu parametrov. Toto je ďalší spôsob preťaženia funkcie v jazyku C++.

#include
pomocou namespace std;
trieda DemoAdd

verejné:
// Prvá definícia funkcie funkcie addition ()
doplnenie float (int a, float b)

plavákový výsledok;
výsledok = (float) a + b;
návratový výsledok;

// Definícia preťaženej funkcie funkcie addition ()
doplnenie float (float a, int b)

plavákový výsledok;
výsledok = a + (float) b;
návratový výsledok;

;
int main ()

DemoAdd d;
int i1 = 10;
float f1 = 10.5, res1, res2;
res1 = d.sčítanie (i1, f1); // bude sa volať prídavok (int a, float b)
res2 = d.pridanie (f1, i1); // bude sa volať prídavok (float a, int b)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
návrat 0;

Záver

C ++ je univerzálny a flexibilný programovací jazyk, ktorý sa široko používa v rôznych doménach. Tento programovací jazyk podporuje polymorfizmus za kompilácie aj za behu. V tomto článku ste sa naučili, ako dosiahnuť polymorfizmus v čase kompilácie v C ++ pomocou funkcie preťaženia funkcií. Toto je veľmi užitočná funkcia v C ++, ktorá pomáha programátorom písať čitateľný kód. Môže to byť užitočné aj pri písaní opakovane použiteľného kódu.

Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...
Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...