Čo je preťaženie v C ++?

C ++ umožňuje písať flexibilný a ľahko zrozumiteľný kód pomocou koncepcie známej ako Preťaženie. Umožňuje dosiahnuť odlišnú funkčnosť v rámci existujúceho kódu s veľmi minimálnymi zmenami, čím sa zníži duplicitný kód. V zásade existujú hlavne dva hlavné typy preťaženia, ktoré podporuje C ++.

C ++ nám umožňuje písať funkcie s rovnakým názvom, ale s rozdielom v údajových typoch alebo v počte argumentov, ktoré sa naň prenášajú, táto funkcia sa v C ++ nazýva Preťaženie funkcií. Táto funkcia umožňuje vývojárom definovať funkcie s rovnakým názvom v rovnakom rozsahu. S rovnakým názvom predstavujú funkcie rovnakú funkcionalitu, čo umožňuje dosiahnuť polymorfizmus kompilácie. Preťaženie funkcie má jednu výhodu, že zlepšuje čitateľnosť kódu.

V C ++ je k dispozícii ďalšia funkcia, ktorá umožňuje predefinovať existujúcu funkčnosť vstavaných operátorov, ktorá sa nazýva Preťažovanie operátorov . Táto funkcia umožňuje použitie vstavaných operátorov na užívateľsky definovaných typoch. Preťaženie operátora zjednodušuje kód opätovným definovaním funkčnosti podľa požiadaviek používateľa. V tomto článku sa zameriame na funkčné preťaženie a preťaženie operátora, uvidíme jeho podrobnosti a ako sa používa v C ++.

Ako funguje preťaženie v C ++?

  • Preťaženie funkcie: Umožňuje nám definovať funkciu s rovnakým názvom, ale rozlišuje funkcie v závislosti od typu parametrov, ktoré sú im odovzdané, alebo od počtu parametrov, ktoré sú im odovzdané. Takže všetky funkcie budú mať rovnaký názov, ale budú mať buď iný typ údajov, alebo budú mať iný počet parametrov. Keď sa funkcia volá, kompilátor vyberie funkciu s typom zhody, ktorý sa zhoduje s počtom argumentov. Teraz si jeho vývojári môžu zvoliť, ktorú funkciu zavolajú podľa požiadaviek. Môžu si zvoliť vhodnú funkciu odovzdaním parametrov podľa pravidiel.
  • Preťaženie operátorov: Umožňuje operátorom pracovať pre typy údajov definované používateľom, tj triedy. Existujúci operátori sú preťažení a majú právomoc pracovať s triedou a objektmi definovanými používateľom. Preťaženie operátora sa dosiahne definovaním funkcie so špeciálnym názvom. Funkcia bude mať názov „operátor“ nasledovaný symbolom operátora. Symbol operátora môžeme použiť priamo na užívateľom definovaný typ údajov a vykonať operáciu. Potrebná činnosť alebo operácia je v tejto špeciálnej funkcii definovaná nami. Prostredníctvom preťaženia operátora môžeme vykonávať operácie rôznych typov na rovnakom type dátového typu.

Typy preťaženia v C ++

Funkcia Preťaženie sa dá dosiahnuť aj tak z hľadiska použitia parametrov. Keď hovoríme o použití parametrov, o ktorých ide, o typ parametra alebo počet parametrov alebo postupnosť parametrov. Funkcia Calc (int x, float y) s parametrami (int x, float y) sa teda líši od funkcie definovanej ako calc (float x, int y), ktoré majú rôzne parametre s rôznym typom údajov.

Môže existovať niekoľko typov, v ktorých je možné dosiahnuť preťaženie funkcií. Pozrime sa na jednoduchý príklad preťaženia funkcií 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;
)

Tu máme triedu Display, ktorá má preťaženú metódu. Metóda show sa bude volať v závislosti od argumentov, ktoré sa jej predložia.

Výkon:

Iba správa: Vitajte

Správa s ID: 10 Správa: Vitajte

Preťaženie operátora sa dá dosiahnuť takmer vo všetkých vstavaných typoch údajov dostupných v C ++. Neexistujú žiadne také rôzne typy preťaženia operátora, ale prístupy môžu byť rôzne, ktoré sa používajú na dosiahnutie preťaženia operátora. Operátori ako Unary, Binary, Relational, Assignment atď. Môžu byť preťažení v C ++.

Pozrime sa na jednoduchý príklad preťaženia operátora ++. V tomto príklade namiesto primitívneho typu údajov použijeme operátor ++ na užívateľom definovanom objekte triedy.

#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 teda objekt, ktorého počiatočná výška bude nastavená na 80 a zvýši sa o 5, keď naň zavoláme ++ operátor.

Výkon:

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

Pravidlá preťaženia v C ++

Nižšie sú uvedené rôzne pravidlá preťaženia C ++:

Pravidlá preťaženia funkcie

  • Pri preťažení funkcie sa funkcia musí líšiť z hľadiska typu údajov, počtu alebo sledu parametrov. Nemôže sa líšiť jednoducho na základe typu návratovej funkcie.

Pravidlá preťaženia prevádzkovateľa

  • Preťaženie môžu vykonávať iba zabudovaní operátori, nových operátorov nemožno preťažiť.
  • Existujú štyria operátori, ktorých nemožno preťažiť . (výber člena), :: (rozlíšenie rozsahu), . * (výber člena pomocou ukazovateľa fungovania) a?: (ternárny operátor).
  • Preťažený operátor bude obsahovať najmenej jeden operand užívateľom definovaného typu údajov.
  • Existujú určití operátori, ktorí nemôžu byť preťažení pomocou funkcie priateľ, ale môžu byť preťažení ako členská funkcia.

záver

Preťaženie v C ++ je jedinečnou vlastnosťou, ktorá nám poskytuje viaceré výhody. Existujú hlavne dva typy preťaženia, tj preťaženie funkciami a preťaženie operátora. Preťaženie funkcií zlepšuje čitateľnosť kódu, a tak zachováva rovnaký názov pre rovnakú akciu. Preťaženie operátorov umožňuje predefinovať existujúcu funkčnosť operátorov tak, že im dáva osobitný význam. Obidve sú veľmi užitočné pri programovaní v C ++.

Odporúčané články

Toto je sprievodca preťažením v C ++. Tu diskutujeme jeho fungovanie, pravidlá a dva typy preťaženia v c ++, tj preťaženie funkciami a preťaženie operátora. Viac informácií nájdete aj v nasledujúcom článku -

  1. Preťaženie v PHP
  2. Kopírovanie Constructor v C ++
  3. Preťaženie verzus overriding
  4. Príkaz Switch v C ++
  5. Preťaženie v Jave
  6. Preťaženie Pythonu

Kategórie: