Co je přetížení v C ++?

C ++ umožňuje psaní flexibilního a snadno srozumitelného kódu pomocí konceptu známého jako Přetížení. Umožňuje dosáhnout různých funkcí v rámci existujícího kódu s velmi minimálními změnami, a tím snížit duplicitní kód. V zásadě existují hlavně dva primární typy přetížení, které jsou podporovány C ++.

C ++ nám umožňuje psát funkce se stejným názvem, ale s rozdílem v datových typech nebo v počtu předaných argumentů je tato funkce v C ++ označována jako Přetížení funkcí. Tato funkce umožňuje vývojářům definovat funkce se stejným názvem ve stejném rozsahu. Se stejným názvem představují funkce stejnou funkcionalitu, což umožňuje dosáhnout polymorfismu kompilace. Přetížení funkce má jednu výhodu, že zlepšuje čitelnost kódu.

V C ++ je k dispozici další funkce, která umožňuje předefinovat stávající funkčnost vestavěných operátorů, která se nazývá přetížení operátorů . Tato funkce umožňuje použití vestavěných operátorů na uživatelsky definovaných typech. Přetížení operátora zjednodušuje kód redefinováním funkčnosti podle požadavků uživatele. V tomto článku se zaměříme jak na přetížení funkcí, tak na přetížení operátora, uvidíme podrobnosti o tom, jak je použito v C ++.

Jak přetížení funguje v C ++?

  • Přetížení funkce: Umožňuje nám definovat funkci se stejným názvem, ale rozlišuje funkce v závislosti na typu předaných parametrů nebo na počtu předaných parametrů. Takže všechny funkce budou mít stejný název, ale budou mít buď jiný datový typ, nebo budou mít předán jiný počet parametrů. Když je funkce volána, kompilátor vybere funkci s odpovídajícím typem parametru a odpovídajícím počtem argumentů. Nyní si mohou jeho vývojáři zvolit, jakou funkci budou volat podle požadavků. Mohou si vybrat vhodnou funkci předáním parametrů podle pravidel.
  • Přetížení operátorů: Umožňuje operátorům pracovat pro typy dat definované uživatelem, tj. Třídy. Stávající operátoři jsou přetíženi a mají moc pracovat s uživatelem definovanou třídou a objekty. Přetížení operátora je dosaženo definováním funkce se zvláštním názvem. Funkce bude mít název „operátor“ následovaný symbolem operátora. Symbol operátora můžeme použít přímo na uživatelem definovaný datový typ a provést operaci. Potřebná akce nebo operace je definována v této speciální funkci námi. Prostřednictvím přetížení operátorem můžeme provádět operace různých typů na stejném typu datového typu.

Typy přetížení v C ++

Funkce Přetížení lze v každém případě dosáhnout z hlediska použití parametrů. Když říkáme použití parametrů, na které se odkazuje, typ parametrů nebo počet parametrů nebo posloupnost parametrů. Funkce Calc (int x, float y) mající parametry (int x, float y) se tedy liší od funkce definované jako calc (float x, int y), které mají různé parametry s různým datovým typem.

Může existovat řada typů, ve kterých lze dosáhnout přetížení funkcí. Podívejme se na jednoduchý příklad přetížení funkcí v 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;
)

Tady máme třídu Display, která má přetíženou metodu show. Metoda show bude volána v závislosti na argumentech, které jí byly předány.

Výstup:

Pouze zpráva: Vítejte

Zpráva s ID: 10 Zpráva: Vítejte

Přetížení operátora lze dosáhnout téměř u všech vestavěných datových typů dostupných v C ++. Neexistují jako takové různé typy přetížení obsluhy, ale přístupy mohou být různé, které se používají k dosažení přetížení obsluhy. Operátoři jako Unary, Binary, Relational, Assignment atd. Mohou být přetíženi v C ++.

Podívejme se na jednoduchý příklad přetížení operátora ++. V tomto příkladu místo primitivního datového typu použijeme ++ operátor na uživatelem definovaném objektu třídy.

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

Máme tedy objekt, jehož počáteční výška bude nastavena na 80 a bude zvýšena o 5, když na něj zavoláme ++ operátor.

Výstup:

Výška kola je: 80
Výška kola je: 85

Pravidla přetížení v C ++

Níže jsou uvedena různá pravidla přetížení C ++:

Pravidla pro přetížení funkce

  • Při přetížení funkce se funkce musí lišit z hlediska typu dat, počtu nebo posloupnosti parametrů. Nemůže se lišit jednoduše na základě typu návratové funkce.

Pravidla pro přetížení obsluhy

  • Přetížení mohou být pouze vestavěné operátory, nové operátory nemohou být přetíženy.
  • Existují čtyři operátoři, kteří nemohou být přetíženi . (výběr člena), :: (rozlišení oboru), . * (výběr prvku pomocí ukazatele na funkci) a?: (ternární operátor).
  • Přetížený operátor bude obsahovat alespoň jeden operand uživatelem definovaného datového typu.
  • Existují určité operátory, které nelze přetížit pomocí funkce přítele, ale mohou být přetíženy jako členská funkce.

Závěr

Takže přetížení v C ++ je jedinečná funkce, která nám poskytuje řadu výhod. Existují hlavně dva typy přetížení, tj. Přetížení funkcí a přetížení obsluhy. Přetížení funkcí zlepšuje čitelnost kódu, a tím udržuje stejný název pro stejnou akci. Přetížení operátorů umožňuje předefinovat stávající funkčnost operátorů tím, že jim dává zvláštní význam. Oba jsou velmi užitečné při programování v C ++.

Doporučené články

Toto je průvodce přetížením v C ++. Zde diskutujeme jeho fungování, pravidla a dva typy přetížení v c ++, tj. Přetížení funkcí a přetížení operátorů. Další informace naleznete také v následujícím článku -

  1. Přetížení v PHP
  2. Kopírovat konstruktor v C ++
  3. Přetížení vs Overriding
  4. Příkaz Switch v C ++
  5. Přetížení v Javě
  6. Přetížení Pythonu

Kategorie: