Introduktion til overbelastning og overstyring i C ++

Lad os begynde med at have de grundlæggende definitioner for overbelastning og tilsidesættelse i C ++.

Overbelastning : Funktionsnavnet er det samme, men parametrene og ændringer af type type returneres. Da vi lærer at kende forskellen mellem de overbelastede funktioner i kompileringstiden, kaldes det også kompileringstidspolymorfisme.

Overriding: Dette er en funktion på Objektorienteret programmeringssprog, hvor funktionen af ​​barneklassen har det samme navn som forældrenes klassefunktion. Idet den overordnede funktionalitet kommer ind i billedet, når objektet er deklareret, og der er adgang til funktionerne ved hjælp af objekterne; det vil sige under udførelsen af ​​kode, kaldes dette begreb om tilsidesættelse også run-time polymorfisme.

Vi har deres syntaks og deres programmeringsmåder i de senere afsnit.

Syntaks for overbelastning og tilsidesættelse

Her er syntaks for overbelastning og tilsidesættelse givet nedenfor.

Overbelastning 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å begrebet Overbelastning.

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

Ovenstående er syntaks for den altoverskyggende funktionalitet. Hovedoutput kan udledes, når vi erklærer et objekt og kalder de samme metoder fra klasse A og klasse B. I funktionen til at tilsidesætte "spiller objektet" en vigtig rolle.

Lad os nu se et eksempel på hver for at lære deres funktionalitet bedre at kende.

Eksempler på overbelastning og overstyring i C ++

Her er eksemplerne på overbelastning og overstyring i C ++ med output givet nedenfor:

Eksempel 1 - Overbelastning

Lad os begynde med et simpelt 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;
)

Produktion:

Hvad nu, hvis jeg giver en forkert datatypeværdier for variablerne a, b?

Kode:

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

Jeg har kun ændret hoveddelen fra ovenstående program, så her går output.

produktion:

Det giver os output, da det vil konvertere floatværdien til int-datatype og giver os output.

Nu kan du som en øvelse prøve at ændre funktionstypen og parametrene for funktionen og lege med dem.

Eksempel 2 - Overriding

Nedenfor kan vi have et eksempel på en altoverskyggende funktionalitet 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();
)

Produktion:

Gennem ovenstående kode kan vi finde ud af, at når referencen til det første klasses objekt tildeles det objekt, der er oprettet med hensyn til vores anden klasse. Og så, når vi adgang til overstyringsmetoden ved hjælp af objektet i baseklassen, kan vi tydeligt bemærke, at den afledte klasseoutput er blevet vist. Dette koncept kaldes altoverskyggende. Den første og den anden klasse er henholdsvis Base og Derived Class. Ovenstående output er et nedenfor:

Som en øvelse kan du prøve at tilsidesætte og overbelaste en funktion sammen og kontrollere, om det er muligt, eller kontrollere, hvordan output viser sig at være?

Hvordan virker det?

Overbelastning: Her er der ikke noget særligt punkt, som vi kan notere os om. Vi er nødt til at sikre, at returtypen eller parametrene inden for funktionen varierer. Hvis vi ser ovenfor på programmeringsstrukturen, erklæres funktionerne først, og deres implementering gives.

Overstyring: Syntaks for arv og implementering af funktioner er de vigtigste punkter, der skal bemærkes her. I eksemplet ovenfor kan vi bemærke, at erklæringen af ​​funktion med offentligt nøgleord er en helt anden.

Og i C ++ afsluttes klassedefinitionen med en semi-colon (;), og hvis vi er nødt til at arve baseklassen til barneklassen, bruger vi colon (:) -symbolet. Hovedfunktionaliteten ved tilsidesættelse observeres, når objekter deklareres og initialiseres for klassen. Efter opkald af funktioner ved hjælp af objekter, kan vi derefter klart forstå begrebet tilsidesættelse.

Fordele

  • Den største fordel ved disse tilsidesættelse og overbelastning er tidsbesparende.
  • Spar hukommelsesplads.
  • Kodens læsbarhed øges.
  • Her, til funktionsoverbelastningskoncept, kan vi bruge forskellige samme funktionsnavne til forskellige operationer og eliminere brugen af ​​forskellige funktionsnavne.
  • Kodens fleksibilitet og vedligeholdelighed bliver lettere.
  • I tilfælde af tilsidesættelse kan barneklassen have funktioner som forældreklasse og kan endda have sin egen implementering af denne funktion.
  • Der kan henvises til objekterne, og funktionerne i både forældreklassen og børneklassen kan få adgang til underklassen.

Konklusion

Vi har nu klart forstået begreberne både overbelastning og tilsidesættelse. Ved overbelastning er vi nødt til at sikre, at forskellen i de overbelastede funktioner findes enten baseret på returtype eller parametrene, skønt funktionsdefinitionen inde i dem er den samme eller forskellige.

Og i tilfælde af tilsidesættelse, da det er et objektorienteret programmeringskoncept, kan vi kun bruge i form af klasser ved hjælp af arvets funktionalitet.

Anbefalede artikler

Dette er en guide til overbelastning og tilsidesættelse i C ++. Her diskuterer vi introduktionen, hvordan fungerer det, syntaks, eksempler og fordele ved overbelastning og overdreven i C ++ med kodeimplementering. Du kan også se på de følgende artikler for at lære mere -

  1. Overbelastning i C ++
  2. Overbelastning vs overdrivning
  3. Overstyring i PHP
  4. Overskydende i C ++
  5. Overstyring i Java
  6. Polymorfisme i Java
  7. Top 11 funktioner og fordele ved C ++
  8. Tilsidesættelse i Python | Funktion og regler

Kategori: