Hva er overbelastning i C ++?

C ++ gjør det mulig å skrive fleksibel og lettforståelig kode ved å bruke konseptet kjent som Overloading. Det gjør det mulig å oppnå forskjellig funksjonalitet innenfor den eksisterende koden med svært minimale endringer, og dermed redusere duplikatkoden. I utgangspunktet er det hovedsakelig to primære typer overbelastning som støttes av C ++.

C ++ lar oss skrive funksjoner med samme navn, men med forskjellen i datatyper eller i antall argumenter som er sendt til den, er denne funksjonen kjent som Funksjon Overbelastning i C ++. Denne funksjonen lar utviklere definere funksjonene med samme navn innenfor samme omfang. Med samme navn representerer funksjonene den samme funksjonaliteten og gjør det mulig å oppnå kompileringstid-polymorfisme. Overbelastningen av funksjonen har en fordel at den forbedrer lesbarheten til koden.

Det er en annen funksjon i C ++ som gjør det mulig å omdefinere den eksisterende funksjonaliteten til innebygde operatører, som er kjent som Operatøroverbelastning . Denne funksjonen gjør det mulig å bruke innebygde operatører på brukerdefinerte typer. Overbelastning av operatører forenkler koden ved å omdefinere funksjonaliteten i henhold til brukerens krav. I denne artikkelen vil vi fokusere på både funksjonsoverbelastning og operatøroverbelastning, vi vil se detaljene om den og hvordan den brukes i C ++.

Hvordan fungerer overbelastning i C ++?

  • Funksjon Overbelastning: Den lar oss definere funksjonen med samme navn, men den skiller funksjonene avhengig av type parametere som er gitt til dem eller antall parametere som er gitt dem. Så alle funksjonene vil ha samme navn, men har enten en annen datatype eller vil ha et annet antall parametere sendt til den. Når funksjonen blir kalt, vil kompilatoren velge funksjonen med den matchende parametertypen og samsvare med antall argumenter. Nå kan utviklerne velge hvilken funksjon de skal ringe i henhold til kravene. De kan velge riktig funksjon ved å sende parametrene etter reglene.
  • Operatøroverbelastning: Den lar operatører jobbe for brukerdefinerte datatyper, dvs. klasser. De eksisterende operatørene blir overbelastet og gitt kraft til å operere på den brukerdefinerte klassen og objektene. Overbelastning av operatører oppnås ved å definere funksjonen med spesialnavnet. Funksjonen vil ha navnet 'operatør' etterfulgt av operatørsymbolet. Vi kan bruke operatørsymbolet direkte på den brukerdefinerte datatypen og utføre operasjonen. Den nødvendige handlingen eller operasjonen er definert i den spesielle funksjonen av oss. Ved hjelp av operatøroverbelastning kan vi utføre operasjoner av forskjellige typer på samme datatype.

Typer overbelastning i C ++

Funksjon Overbelastning kan oppnås på alle måter når det gjelder bruk av parametere. Når vi sier bruk av parametere det refererer til, type parametere eller antall parametere eller parametersekvens. Så funksjon calc (int x, float y) med parametere (int x, float y) er forskjellig fra en funksjon definert som calc (float x, int y) som har forskjellige parametere med den forskjellige datatypen.

Det kan være en rekke typer der overbelastning av funksjoner kan oppnås. La oss se det enkle eksemplet på overbelastning av funksjoner i 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;
)

Her har vi klasse Display som har et overbelastet metodevis. Showmetoden vil bli kalt avhengig av argumentene som er gitt til den.

Produksjon:

Eneste melding: Velkommen

En melding med ID: 10 Melding: Velkommen

Overbelastning av operatører kan oppnås på nesten alle de innebygde datatypene som er tilgjengelige i C ++. Det er ikke så forskjellige typer overbelastning av operatører, men tilnærmingene kan være forskjellige som brukes for å oppnå overbelastning av operatører. Operatører som Unary, Binary, Relational, Assignment, etc kan overbelastes i C ++.

La oss se det enkle eksemplet på overbelastning av ++ operatør. I dette eksemplet i stedet for primitiv datatype, vil vi bruke ++ operatør på det brukerdefinerte klasseobjektet.

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

Så vi har et objekt hvis opprinnelige høyde blir satt til 80 og økes med 5 når vi kaller ++ operatør over det.

Produksjon:

Sykkelens høyde er: 80
Sykkelens høyde er: 85

Regler for overbelastning i C ++

Nedenfor er de forskjellige C ++ overbelastningsreglene som følger:

Regler for funksjonsoverbelastning

  • Ved overbelastning av funksjoner må funksjonen variere med tanke på datatype, antall eller sekvens av parametere. Det kan ikke avvike bare på bakgrunn av returtypen av funksjonen.

Regler for overbelastning av operatøren

  • Bare innebygde operatører kan overbelastes, de nye operatørene kan ikke overbelastes.
  • Det er fire operatører som ikke kan overbelastes . (medlemsvalg), :: (omfangsoppløsning), . * (medlemsvalg ved hjelp av pekeren for å fungere) og?: (ternary operator).
  • Den overbelastede operatøren vil inneholde minst en operand av den brukerdefinerte datatypen.
  • Det er visse operatører som ikke kan overbelastes ved å bruke vennefunksjonen, men de kan være overbelastet som en medlemsfunksjon.

Konklusjon

Så overbelastningen i C ++ er den unike funksjonen som gir oss flere fordeler. Det er hovedsakelig to typer overbelastning, dvs. funksjonsoverbelastning og overbelastning av operatører. Overbelastning av funksjoner forbedrer kodelesbarheten og holder dermed samme navn for den samme handlingen. Overbelastning av operatører gjør det mulig å omdefinere den eksisterende funksjonaliteten til operatørene og dermed gi dem spesiell mening. Begge er veldig nyttige i programmering i C ++.

Anbefalte artikler

Dette er en guide til overbelastning i C ++. Her diskuterer vi dets arbeid, regler og to typer overbelastning i c ++ dvs. funksjonsoverbelastning og operatøroverbelastning. Du kan også se på følgende artikkel for å lære mer -

  1. Overbelastning i PHP
  2. Kopier konstruktør i C ++
  3. Overbelastning vs overstyring
  4. Bytt uttalelse i C ++
  5. Overbelastning i Java
  6. Python-overbelastning