Funksjon Overbelastning i C ++: Alt du trenger å vite



Denne artikkelen vil gi deg en detaljert og omfattende kunnskap om funksjonsoverbelastning i C ++ med mange eksempler å forstå.

C ++ er et av de programmeringsspråkene som er veldig fleksibelt og dekker også flere funksjoner i objektorientert programmering. Overbelastning er en annen funksjon i dette programmeringsspråket.Følgende pekere vil bli dekket i denne artikkelen 'Funksjon Overbelastning i C ++' -

C ++ Overbelastning

Når vi oppretter to eller flere medlemmer av en klasse med samme navn, men forskjellige i antall eller type parametere, er det kjent som C ++ overbelastning. I C ++ kan vi overbelaste:





  • metoder,
  • konstruktører, og
  • indekserte eiendommer

Typer av overbelastning i C ++

types-of-overloading-in-c++

Hva er funksjonsoverbelastning i C ++?

Funksjon Overbelastning i C ++ kan defineres som prosessen med å ha to eller flere medlemsfunksjoner i en klasse med samme navn, men forskjellige i parametere. Ved funksjonsoverbelastning kan funksjonen omdefineres enten ved å bruke forskjellige typer argumenter eller et annet antall argumenter i henhold til kravet. Det er bare gjennom disse forskjellene kompilatoren kan skille mellom de to overbelastede funksjonene.



En av de største fordelene med Overbelastning av funksjoner er at det øker lesbarheten til programmet fordi vi ikke trenger å bruke forskjellige navn for den samme handlingen igjen og igjen.

Ved å endre antall argumenter

På denne måten å overbelaste funksjoner, definerer vi to funksjoner med samme navn, men et annet antall parametere av samme type. I det nevnte programmet har vi for eksempel laget to add () -funksjoner for å returnere summen av to og tre heltall.

// første funksjonsdefinisjon int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Her sies det at add () -funksjonen er overbelastet, da den har to definisjoner, en som godtar to argumenter og en annen som godtar tre argumenter. Hvilken add () -funksjon som skal kalles, avhenger av antall argumenter.



hvorfor skal jeg lære sql
int main () {add (10, 20) // add () with 2 parameter will be called (10, 20, 30) // sum () with 3 parameter will be called}
#include ved å bruke navneområdet std int add (int a, int b) {cout<< a+b <

I eksemplet ovenfor overbelaster vi add () -funksjonen ved å endre antall argumenter. Først definerer vi en add () -funksjon med to parametere, så overbelaster vi den ved å definere add () -funksjonen igjen, men denne gangen med tre parametere.

Ved å ha forskjellige typer argumenter

I denne metoden definerer vi to eller flere funksjoner med samme navn og samme antall parametere, men datatypen som brukes for disse parametrene er forskjellig. For eksempel i dette programmet har vi tre add () -funksjoner, den første får to heltallargumenter, den andre får to floatargumenter og den tredje får to doble argumenter.

#include ved å bruke navneområdet std int add (int x, int y) // første definisjon {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

I eksemplet ovenfor definerer vi add () -funksjonen tre ganger. Først bruker heltall som parametere, andre bruker float som parametere og tredje bruker dobbelt som parameter.
Dermed overstyrer vi add () -funksjonen to ganger.

Fordeler med funksjon Overbelastning i C ++

  • Vi bruker funksjonsoverbelastning for å spare minne, konsistens og lesbarhet i programmet vårt.

  • Med konseptet overbelastning av bruksfunksjonen kan vi utvikle mer enn en funksjon med samme navn

    jenkins vs puppet vs chef
  • Funksjonsoverbelastning viser oppførselen til polymorfisme som gjør at vi kan få ulik oppførsel, selv om det vil være noen lenker med samme navn på funksjonen.

  • Overbelastning av funksjoner fremskynder gjennomføringen av programmet.

  • Funksjonsoverbelastning brukes til gjenbrukbar kode og også for å spare minne.

  • Det hjelper applikasjonen å laste klassemetoden basert på typen parameter.

  • Vedlikehold av koder er enkelt.

Ulemper ved funksjon Overbelastning i C ++

  • Funksjonserklæringer som bare skiller seg etter returtype, kan ikke overbelastes med funksjonsoverbelastningsprosessen.
  • Erklæringer om medlemsfunksjoner med samme parametere eller samme navnetyper kan ikke overbelastes hvis noen av dem blir erklært som en statisk medlemsfunksjon.
  • klasse XYZ {statisk ugyldig funksjon () ugyldig funksjon () // feil}

Funksjon Overbelastning og tvetydighet

Når kompilatoren ikke klarer å bestemme hvilken funksjon den skal påberope seg først blant de overbelastede funksjonene, er denne situasjonen kjent som funksjonsoverbelastnings tvetydighet. Kompilatoren kjører ikke programmet hvis det viser tvetydighetsfeil. Årsaker til tvetydighet overbelastning av funksjon:

  • Skriv konvertering.
  • Funksjon med standardargumenter.
  • Funksjon med passering

Type konvertering:

# inkludere bruk av navneområde std ugyldig funksjon (flyte) ugyldig funksjon (int) ugyldig funksjon (flyte x) {std :: cout<< 'Value of x is : ' <

Ovennevnte eksempel kaster en feil - 'call of overloaded‘ function (double) 'is ambiguous '. Funksjonen (3.4) vil kalle den første funksjonen. Funksjonen (34) kaller den andre funksjonen i henhold til vår prediksjon. Men dette er ikke det som skjer fordi i C ++ behandles alle flytende punktkonstantene som doble, ikke som en flottør. Hvis vi erstatter flytevariabelen til en dobbel variabel, fungerer programmet bra. Derfor kaller vi dette en type konverteringsfeil fra float til double.

hva er en røye i java

Funksjon med standardargumenter:

# inkludere bruk av navneområde std ugyldig funksjon (int) ugyldig funksjon (int, int) ugyldig funksjon (int x) {std :: cout<< 'Value of x is : ' <

Ovennevnte eksempel gir en feil som sier 'call of overloaded 'fun (int)' is ambiguous', dette er fordi funksjon (int y, int z = 12) kan kalles på to måter:

  1. Ved å ringe funksjonen med ett argument (og det vil automatisk ta verdien av z = 12)
  2. Ved å ringe funksjonen med to argumenter.

Når vi kaller funksjonen: funksjon (12) fyller vi tilstanden til både funksjon (int) og funksjon (int, int), slik at kompilatoren kommer i en uklarhet viser en feil.

Funksjon med pass by referanse

# inkludere bruk av navneområdet std ugyldig funksjon (int) ugyldig funksjon (int &) ugyldig funksjon (int a) {std :: cout<< 'Value of a is : ' < 

Ovennevnte program gir en feil som sier 'call of overloaded 'fun (int &)' is ambiguous'. Som vi ser tar den første funksjonen ett heltallargument og den andre funksjonen tar en referanseparameter som et argument. I dette tilfellet er ikke kompilatoren i stand til å forstå hvilken funksjon som er nødvendig av brukeren, da det ikke er noen syntaktisk forskjell mellom moro (int) og moro (int &), og dermed skyter det en tvetydighetsfeil.

Med dette kommer vi til en slutt på denne funksjonsoverbelastningen i C ++. Hvis du ønsker å lære mer, sjekk ut av Edureka, et pålitelig online læringsfirma. Edurekas Java J2EE- og SOA-opplæring og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.