Introduksjon til overbelastning og overstyring i C ++

La oss begynne med å ha de grunnleggende definisjonene for overbelastning og overstyring i C ++.

Overbelastning : Funksjonsnavnet er det samme, men parameterne og endringstypen endres. Siden vi vil bli kjent med forskjellen mellom de overbelastede funksjonene under kompileringstid, kalles det også Compile time polymorfisme.

Overriding: Dette er en funksjon i Objektorientert programmeringsspråk der funksjonen til barneklassen har samme navn som foreldrenes klassefunksjon. Når den overordnede funksjonaliteten kommer inn i bildet når objektet er deklarert og funksjonene får tilgang til ved hjelp av objektene; det vil si under utførelsen av kode, kalles dette begrepet overstyring også run time polymorfisme.

Vi har syntaks og programmeringsmåter i de senere seksjoner.

Syntaks for overbelastning og overstyring

Her er syntaks for overbelastning og overstyring gitt nedenfor.

Overbelastende syntaks:

return_type function_name ( int param_1, string param_2)
(
//function definition
)
return_type_2 function_name ( int param_1, string param_2)
(
//function definition
)
return_type function_name ( int param_1, int param_2)
(
//function definition
)

Alle tre sammen kan danne et eksempel på begrepet Overbelastning.

Overstyrer syntaks:

Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);Class B : Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);

Ovennevnte er syntaks for den overordnede funksjonaliteten. Hovedutgangen kan utledes når vi har erklært et objekt og kaller de samme metodene fra klasse A og klasse B. I funksjonaliteten for å overstyre "objektet" spiller en viktig rolle.

La oss nå se et eksempel for å bli bedre kjent med funksjonaliteten deres.

Eksempler på overbelastning og overstyring i C ++

Her er eksemplene på overbelastning og overstyring i C ++ med utgangen gitt nedenfor:

Eksempel 1 - Overbelastning

La oss begynne med et enkelt program.

Kode:

#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)

Produksjon:

Hva om jeg gir feil datatypeverdier for variablene a, b?

Kode:

int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)

Jeg har bare endret hoveddelen fra programmet over, så her går output.

produksjon:

Det gir oss utdata da det skal konvertere flyteverdien til int datatype og gir oss utdataene.

Nå som en øvelse kan du prøve å endre funksjonstypen og parametrene for funksjonen og leke med dem.

Eksempel 2 - Overriding

Nedenfor kan vi ha et eksempel for en overordnet funksjonalitet i C ++.

Kode:

#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)

Produksjon:

Gjennom koden ovenfor kan vi finne at når referansen til førsteklasses objekt tilordnes objektet som er opprettet med hensyn til vår andre klasse. Og da vi fikk tilgang til overstyringsmetoden ved å bruke objektet til baseklassen, kan vi tydelig merke at den avledede klasseutgangen er blitt vist. Dette konseptet kalles overstyrende. Første og andre klasse er henholdsvis Base og Derived Class. Resultatene fra ovenstående er nedenfor:

Som en øvelse kan du prøve å overstyre og overbelaste en funksjon sammen og sjekke om det er mulig eller sjekke hvordan utgangen viser seg å være?

Hvordan virker det?

Overbelastning: Her er det ikke noe spesielt poeng som vi kan ha et notat om. Vi må sørge for at returtypen eller parametrene i funksjonen varierer. Hvis vi ser over på programmeringsstrukturen, blir funksjonene erklært først og implementeringen deres gitt.

Overstyring: Syntaksen til arvelighet og implementering av funksjoner er de viktigste punktene du må legge merke til her. I eksemplet over kan vi merke at funksjonserklæringen med offentlige nøkkelord er ganske annerledes.

Og i C ++ blir klassedefinisjonen avsluttet med en halvkolon (;), og hvis vi trenger å arve baseklassen til barneklassen, bruker vi kolon (:) -symbolet. Hovedfunksjonaliteten for overstyring blir observert når objekter deklareres og initialiseres for klassen. Etter å ha kalt funksjoner som bruker objektene, kan vi da forstå begrepet overstyring.

Fordeler

  • Den viktigste fordelen med å overstyre og overbelaste er tidsbesparende.
  • Spar minneplass.
  • Kodens lesbarhet økes.
  • Her, for funksjonsoverbelastningskonsept, kan vi bruke forskjellige samme funksjonsnavn for forskjellige operasjoner, og eliminere bruken av forskjellige funksjonsnavn.
  • Kodenes fleksibilitet og vedlikeholdbarhet blir enklere.
  • I tilfelle av overstyring, kan barneklassen ha funksjoner som foreldreklasse og kan til og med ha sin egen implementering av den funksjonen.
  • Det kan vises til objektene, og funksjonene til både foreldreklassen og barneklassen kan nås av barneklassen.

Konklusjon

Vi har nå klart forstått begrepene både overbelastning og overstyring. I overbelastning må vi sørge for at forskjellen i de overbelastede funksjonene eksisterer enten basert på returtype eller parametrene, selv om funksjonsdefinisjonen i dem er den samme eller annerledes.

Og i tilfelle av overstyring, siden det er et objektorientert programmeringskonsept, kan vi bare bruke i form av klasser ved å bruke funksjonaliteten til arv.

Anbefalte artikler

Dette er en guide til overbelastning og overstyring i C ++. Her diskuterer vi introduksjonen, hvordan fungerer den, syntaks, eksempler og fordeler ved overbelastning og Overriding i C ++ med kodeimplementering. Du kan også se på følgende artikler for å lære mer -

  1. Overbelastning i C ++
  2. Overbelastning vs overstyring
  3. Overstyring i PHP
  4. Overstyring i C ++
  5. Overstyrer i Java
  6. Polymorfisme i Java
  7. Topp 11 funksjoner og fordeler med C ++
  8. Overriding i Python | Funksjon og regler