C ++

Přetížení funkce v C ++

Přetížení funkce v C ++

C ++ je flexibilní univerzální programovací jazyk. Tento programovací jazyk původně vytvořil dánský počítačový vědec Bjarne Stroustrup již v roce 1985. C ++ podporuje polymorfismus, dědičnost a další. Tento článek popisuje přetížení funkcí k dosažení polymorfismu v době kompilace v programovacím jazyce C ++.

Co je to funkce?

Funkce není nic jiného než konkrétní část kódu, která provádí konkrétní úkol na základě poskytnutých vstupů a vrací požadované výsledky uživateli ve formě výstupu. Funkce se používají k eliminaci opakujícího se kódu ve velkých kódových základnách.

Po definování funkce ji můžete později znovu použít, a to buď ve stejném programu, nebo v jiném programu.

Syntaxe funkce

Funkce v C ++ má následující syntaxi:

returnType název funkce (seznam_parametrů)



návrat návratová hodnota;

Návrat returnType, seznam_parametrů a návrat jsou volitelné. Funkce v C ++ může vrátit maximálně jednu hodnotu. Pokud funkce nevrátí žádnou hodnotu, měl by být returnType definován jako void.

Co je přetížení funkce?

V C ++ může mít více definic funkcí stejný název funkce, ale s různými parametry. Tomu se říká přetížení funkce. Pomocí funkce přetížení funkce lze v C dosáhnout polymorfismu v době kompilace++.

Funkce lze přetížit následujícími způsoby:

  1. Počet parametrů se může lišit
  2. Datový typ parametrů se může lišit
  3. Pořadí parametrů se může lišit

Návratová hodnota se však při přetížení funkce nezohledňuje. 

Následující funkce jsou přetížené:

  1. přidání int (int a, int b)
  2. float add (float f, gloat g)
  3. float add (float f, int i)
  4. float add (int i, float f)
  5. přidání int (int a, int b, int c)
  6. float add (float f, float g, float h)

Jak vidíte, pomocí funkce přetížení funkce v C ++ může existovat více definic / funkcí se stejným názvem funkce a ve stejném rozsahu.

Bez funkce přetížení funkce byste museli pro každou variantu napsat samostatnou funkci [například addition_1 (), addition_2 () atd.]. Možná budete muset například napsat add_1 () pro přidání dvou celých čísel, addition_2 () pro přidání dvou plováků atd. Jak však vidíte výše, funkci přetížení funkce lze použít k definování více variant funkce „addition ()“ při zachování stejného názvu funkce.

Následující funkce nejsou považovány za přetížené, protože jediný rozdíl mezi těmito dvěma je návratový typ (návratový typ není považován za přetížení funkce v C ++):

  1. int přidání (int a, int b)
  2. float add (int a, int b)

Příklady

Nyní, když rozumíte konceptu přetížení funkcí, projdeme několik pracovních ukázkových programů, abychom tento koncept pochopili jasněji. Pokryjeme následující příklady:

  1. Příklad 1: Jednoduchá funkce
  2. Příklad 2: Funkce jednoduchého přidání
  3. Příklad 3: Přetížení funkce (1)
  4. Příklad 4: Přetížení funkce (2)
  5. Příklad 5: Přetížení funkce (3)

První dva příklady vysvětlují, jak normální funkce fungují v C ++, zatímco poslední tři příklady ukazují funkci přetížení funkce v C++.

Příklad 1: Jednoduchá funkce

V tomto příkladu si ukážeme, jak lze v C definovat a volat jednoduchou funkci++. Definujeme třídu nazvanou „Display“ a veřejnou funkci nazvanou „display ().„Z funkce„ main () “zavoláme funkci„ display () “pomocí objektu třídy„ Display “(d).

#zahrnout
pomocí jmenného prostoru std;
třída displej

veřejnost:
void display ()

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

;
int main ()

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

Příklad 2: Funkce jednoduchého přidání

V tomto příkladu si ukážeme, jak definovat jednoduchou funkci „addition ()“ v C++. Definujeme třídu nazvanou „DemoAdd“ a veřejnou funkci nazvanou „addition ().„Z funkce„ main () “zavoláme funkci„ addition () “pomocí objektu třídy„ DemoAdd “(d).

V tomto příkladu aktuální implementace funkce „addition ()“ přijímá pouze dva celočíselné parametry. To znamená, že aktuální funkce „addition ()“ je schopna přidat pouze dvě celá čísla.

Chcete-li přidat tři celá čísla místo dvou, můžete definovat funkci s jiným názvem, například „addition_1 ()“. V C ++ může být funkce přetížena, což znamená, že lze definovat další definici funkce „addition ()“ pro přidání tří celých čísel a zachování stejného jména, i.E., "přidání().„V dalším příkladu se podíváme na to, jak přetížit funkci„ addition () “.

#zahrnout
pomocí jmenného prostoru std;
třída DemoAdd

veřejnost:
přidání int (int a, int b)

int výsledek;
výsledek = a + b;
vrátit výsledek;

;
int main ()

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

Příklad 3: Přetížení funkce (1)

V předchozím příkladu jsme definovali funkci „addition ()“ pro přidání dvou celých čísel a vrácení vypočítaného výsledku. Nyní v tomto příkladu přetížíme funkci „addition ()“ a přidáme tři celá čísla. Budeme tedy moci volat funkci „addition ()“ se dvěma celočíselnými argumenty a třemi celočíselnými argumenty.

Bez funkce přetížení funkce bychom museli napsat další funkci s jiným názvem.

#zahrnout
pomocí jmenného prostoru std;
třída DemoAdd

veřejnost:
// Definice první funkce sčítání ()
přidání int (int a, int b)

int výsledek;
výsledek = a + b;
vrátit výsledek;

// Přetížená verze funkce addition ()
přidání int (int a, int b, int c)

int výsledek;
výsledek = a + b + c;
vrátit výsledek;

;
int main ()

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

Příklad 4: Přetížení funkce (2)

V dřívějších částech tohoto článku jste zjistili, že přetížení funkcí lze provést na základě rozdílů v typu parametru. Zde jsme přetížili funkci „addition ()“ na základě datového typu parametru. V první verzi funkce sčítání přidáme dvě proměnné celočíselného typu; a ve druhé verzi přidáme dvě proměnné typu float.

#zahrnout
pomocí jmenného prostoru std;
třída DemoAdd

veřejnost:
// První definice přidání ()
int přidání (int a, int b)

int výsledek;
výsledek = a + b;
vrátit výsledek;

// Definice přetížené funkce
float add (float f, float g)

plovoucí výsledek;
výsledek = f + g;
vrátit výsledek;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res1;
float f1 = 10.5, f2 = 20.7, res2;
res1 = d.sčítání (i1, i2); // doplněk (int a, int b) bude volán
res2 = d.přidání (f1, f2); // doplněk (float f, flat g) bude volán
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
návrat 0;

Příklad 5: Přetížení funkce (3)

V tomto příkladu je funkce „addition ()“ přetížena na základě rozdílů v pořadí v seznamu parametrů. Toto je další způsob přetížení funkce v jazyce C++.

#zahrnout
pomocí jmenného prostoru std;
třída DemoAdd

veřejnost:
// První definice funkce funkce addition ()
float add (int a, float b)

plovoucí výsledek;
result = (float) a + b;
vrátit výsledek;

// Definice přetížené funkce funkce addition ()
float add (float a, int b)

plovoucí výsledek;
result = a + (float) b;
vrátit výsledek;

;
int main ()

DemoAdd d;
int i1 = 10;
float f1 = 10.5, resl, res2;
res1 = d.přídavek (i1, f1); // doplněk (int a, float b) bude volán
res2 = d.doplnění (f1, i1); // doplněk (float a, int b) bude volán
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
návrat 0;

Závěr

C ++ je univerzální a flexibilní programovací jazyk, který je široce používán v různých doménách. Tento programovací jazyk podporuje polymorfismus v době kompilace i za běhu. V tomto článku jste se naučili, jak dosáhnout polymorfismu v době kompilace v C ++ pomocí funkce přetížení funkce. Toto je velmi užitečná funkce v C ++, která pomáhá programátorům psát čitelný kód. Může to být také užitečné při psaní opakovaně použitelného kódu.

Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...
Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...