C ++

C ++ - funktion överbelastning

C ++ - funktion överbelastning

C ++ är ett flexibelt programmeringsspråk för allmänt ändamål. Detta programmeringsspråk skapades ursprungligen av Bjarne Stroustrup, en dansk datavetare, redan 1985. C ++ stöder polymorfism, arv och mer. Denna artikel täcker överbelastning av funktioner för att uppnå polymorfism under kompileringstid i programmeringsspråket C ++.

Vad är en funktion?

En funktion är inget annat än en specifik kod som utför en specifik uppgift baserat på angivna ingångar, och den returnerar de begärda resultaten till användaren i form av en utdata. Funktioner används för att eliminera repetitiv kod i stora kodbaser.

Efter att ha definierat en funktion kan du återanvända den vid en senare tidpunkt, antingen i samma program eller i ett annat program.

Funktionssyntax

En funktion i C ++ har följande syntax:

returnType funktionsnamn (parameter_lista)

..
..
returnera returvärde;

ReturnType, parameter_list och return statement är valfria. En funktion i C ++ kan returnera högst ett värde. Om en funktion inte returnerar något värde ska returnType definieras som ogiltigt.

Vad är funktionsöverbelastning?

I C ++ kan flera funktionsdefinitioner ha samma funktionsnamn, men med olika parametrar. Detta kallas funktionsöverbelastning. Med hjälp av funktionsöverbelastningsfunktionen kan sammanställningstidspolymorfism uppnås i C++.

Funktioner kan överbelastas på följande sätt:

  1. Antalet parametrar kan vara olika
  2. Datatypen för parametrarna kan vara annorlunda
  3. Parametrarnas sekvens kan vara annorlunda

Returvärdet beaktas dock inte för funktionsöverbelastning. 

Följande funktioner är överbelastade:

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

Som du kan se, med hjälp av funktionsöverbelastningsfunktionen i C ++ kan det finnas flera definitioner / funktioner med samma funktionsnamn och i samma omfattning.

Utan funktionen för överbelastning av funktion måste du skriva en separat funktion [till exempel addition_1 (), addition_2 () etc] för varje variant. Du kan till exempel behöva skriva addition_1 () för att lägga till två heltal, addition_2 () för att lägga till två floats, och så vidare. Som du kan se ovan kan funktionens överbelastningsfunktion användas för att definiera flera variationer av funktionen "addition ()" samtidigt som samma funktionsnamn behålls.

Följande funktioner anses inte vara överbelastade eftersom den enda skillnaden mellan dessa två är returtypen (returtyp anses inte för funktion överbelastning i C ++):

  1. int addition (int a, int b)
  2. float addition (int a, int b)

Exempel

Nu när du förstår begreppet funktionsöverbelastning, kommer vi att gå igenom ett par arbetsexempelprogram för att förstå detta koncept tydligare. Vi kommer att täcka följande exempel:

  1. Exempel 1: Enkel funktion
  2. Exempel 2: Enkel tilläggsfunktion
  3. Exempel 3: Funktionsöverbelastning (1)
  4. Exempel 4: Funktionsöverbelastning (2)
  5. Exempel 5: Funktionsöverbelastning (3)

De första två exemplen förklarar hur normala funktioner fungerar i C ++, medan de sista tre exemplen visar funktionen för överbelastning av funktion i C++.

Exempel 1: Enkel funktion

I det här exemplet kommer vi att visa hur en enkel funktion kan definieras och anropas i C++. Vi kommer att definiera en klass som heter "Display" och en offentlig funktion som heter "display ().”Från“ main () ”-funktionen kommer vi att ringa“ display () ”-funktionen med hjälp av klassobjektet“ Display ”(d).

#omfatta
använder namnrymd std;
klass Display

offentlig:
ogiltig visning ()

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

;
int main ()

Display d;
d.visa();
returnera 0;

Exempel 2: Enkel tilläggsfunktion

I det här exemplet kommer vi att demonstrera hur man definierar en enkel “addition ()” -funktion i C++. Vi kommer att definiera en klass som heter "DemoAdd" och en offentlig funktion som heter "addition ().”Från“ main () ”-funktionen kommer vi att kalla” addition () ”-funktionen med hjälp av klassobjektet“ DemoAdd ”(d).

I det här exemplet accepterar den nuvarande implementeringen av funktionen "addition ()" endast två heltalsparametrar. Det betyder att den aktuella funktionen "addition ()" endast kan lägga till två heltal.

För att lägga till tre heltal istället för två kan en funktion med ett annat namn, såsom "addition_1 ()", definieras. I C ++ kan en funktion överbelastas, vilket innebär att en annan definition av funktionen "addition ()" kan definieras för att lägga till tre heltal och behålla samma namn, i.e., "tillägg().”I nästa exempel ska vi titta på hur man överbelastar funktionen” addition () ”.

#omfatta
använder namnrymd std;
klass DemoAdd

offentlig:
int addition (int a, int b)

int-resultat;
resultat = a + b;
returresultat;

;
int main ()

DemoLägg till d;
int i1 = 10, i2 = 20, res;
res = d.addition (i1, i2);
cout << "Result = " << res << endl;
returnera 0;

Exempel 3: Funktionsöverbelastning (1)

I föregående exempel definierade vi funktionen "addition ()" för att lägga till två heltal och returnera det beräknade resultatet. Nu, i detta exempel, kommer vi att överbelasta funktionen "addition ()" för att lägga till tre heltal. Så vi kommer att kunna kalla funktionen "addition ()" med två heltalargument, liksom tre heltalargument.

Utan funktionen överbelastningsfunktion skulle vi behöva skriva en annan funktion med ett annat namn.

#omfatta
använder namnrymd std;
klass DemoAdd

offentlig:
// Första funktionsdefinitionen av tillägg ()
int addition (int a, int b)

int-resultat;
resultat = a + b;
returresultat;

// Överbelastad version av funktionen addition ()
int addition (int a, int b, int c)

int-resultat;
resultat = a + b + c;
returresultat;

;
int main ()

DemoLägg till d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.addition (i1, i2); // addition () med två parametrar
res2 = d.addition (i1, i2, i3); // addition () med 3 parametrar
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
returnera 0;

Exempel 4: Funktionsöverbelastning (2)

I tidigare avsnitt i den här artikeln lärde du dig att funktionsöverbelastning kan utföras baserat på skillnader i parametertyp. Här har vi överbelastat funktionen "addition ()" baserat på parametern datatyp. I den första versionen av tilläggsfunktionen kommer vi att lägga till två variabler av heltalstyp; och i den andra versionen lägger vi till två variabler av flyttyp.

#omfatta
använder namnrymd std;
klass DemoAdd

offentlig:
// Första definitionen av tillägg ()
int addition (int a, int b)

int-resultat;
resultat = a + b;
returresultat;

// Överbelastad funktionsdefinition
float addition (float f, float g)

flytresultat;
resultat = f + g;
returresultat;

;
int main ()

DemoLägg till d;
int i1 = 10, i2 = 20, res1;
flottör f1 = 10.5, f2 = 20.7, res2;
res1 = d.addition (i1, i2); // addition (int a, int b) kommer att anropas
res2 = d.addition (f1, f2); // addition (float f, flat g) kommer att kallas
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
returnera 0;

Exempel 5: Funktionsöverbelastning (3)

I det här exemplet är funktionen "addition ()" överbelastad baserat på skillnader i parametrarnas sekvens. Detta är ett annat sätt att överbelasta en funktion i C++.

#omfatta
använder namnrymd std;
klass DemoAdd

offentlig:
// Första funktionsdefinitionen av addition () -funktionen
float addition (int a, float b)

flyta resultat;
resultat = (flyta) a + b;
returresultat;

// Överbelastad funktionsdefinition av addition () -funktionen
float addition (float a, int b)

flyta resultat;
resultat = a + (float) b;
returresultat;

;
int main ()

DemoLägg till d;
int i1 = 10;
flottör f1 = 10.5, resl, res2;
res1 = d.tillsats (i1, fl); // addition (int a, float b) kommer att anropas
res2 = d.addition (fl, i1); // addition (float a, int b) kommer att anropas
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
returnera 0;

Slutsats

C ++ är ett allmänt och flexibelt programmeringsspråk som används i stor utsträckning inom olika domäner. Detta programmeringsspråk stöder både sammanställningstid och körtidspolymorfism. I den här artikeln lärde du dig hur man uppnår polymorfism i kompileringstid i C ++ med funktionen överbelastningsfunktion. Detta är en mycket hjälpsam funktion i C ++ som hjälper programmerare att skriva läsbar kod. Det kan också vara till hjälp för att skriva återanvändbar kod.

Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...
Mus Lägg till musgester i Windows 10 med dessa gratisverktyg
Lägg till musgester i Windows 10 med dessa gratisverktyg
Under senare år har datorer och operativsystem utvecklats kraftigt. Det fanns en tid då användare var tvungna att använda kommandon för att navigera g...
Mus Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Dual Display Mouse Manager låter dig kontrollera och konfigurera musrörelser mellan flera skärmar genom att sakta ner dess rörelser nära gränsen. Wind...