Introduktion till överbelastning och överbestyrning i C ++

Låt oss börja detta med att ha de grundläggande definitionerna för överbelastning och överskridande i C ++.

Överbelastning : Funktionsnamnet är detsamma men parametrarna och ändringarna av typtyper. Eftersom vi kommer att lära känna skillnaden mellan de överbelastade funktionerna under kompileringstiden kallas det också för kompileringstidspolymorfism.

Övervägande: Detta är en funktion i objektorienterat programmeringsspråk där funktionen för barnklass har samma namn som förälderns klassfunktion. Eftersom den övergripande funktionen kommer in i bilden när objektet har deklarerats och funktionerna nås med hjälp av objekten; det vill säga under kodutförandet kallas detta åsidosättande också polymorfism för körning.

Vi har deras syntax och deras programmeringssätt i de senare avsnitten.

Syntax för överbelastning och åsidosättande

Här är syntaxen för överbelastning och överskridande som ges nedan.

Överbelastning syntax:

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
)

Alla tre tillsammans kan bilda ett exempel på begreppet överbelastning.

Överbryter syntax:

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

Ovanstående är syntaxen för den övervägande funktionen. Huvudutgången kan härledas när vi förklarar ett objekt och kallar samma metoder från klass A och klass B. I funktionen för att åsidosätta spelar ”objektet” en viktig roll.

Låt oss nu se ett exempel för att lära känna deras funktionalitet bättre.

Exempel på överbelastning och överbestyrning i C ++

Här är exemplen på överbelastning och överskridande i C ++ med utgången nedan:

Exempel 1 - Överbelastning

Låt oss börja med ett enkelt program.

Koda:

#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:

Vad gör jag nu om jag anger fel datatypvärden för variablerna a, b?

Koda:

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

Jag har bara ändrat huvuddelen från ovanstående program, så här går utgången.

produktion:

Det ger oss utdata eftersom det kommer att konvertera flottörvärdet till int-datatyp och ger oss utdata.

Nu kan du som en övning prova att ändra funktionens returtyp och parametrar och leka med dem.

Exempel 2 - Överridsning

Nedan kan vi ha ett exempel på en övergripande funktionalitet i C ++.

Koda:

#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:

Genom koden ovan kan vi konstatera att när referensen till det första klassobjektet tilldelas det objekt som skapats med avseende på vår andra klass. Och sedan när vi öppnade åsidosättningsmetoden med objektet för basklassen, kan vi tydligt märka att den härledda klassutgången har visats. Detta koncept kallas överskridande. Den första och den andra klassen är bas respektive deriverad klass. Utgången från ovanstående är en nedan:

Som en övning kan du försöka att åsidosätta och överbelasta en funktion tillsammans och kontrollera om det är möjligt eller kontrollera hur utgången visar sig vara?

Hur fungerar det?

Överbelastning: Här finns det ingen speciell poäng som vi kan notera om. Vi måste se till att returtypen eller parametrarna i funktionen varierar. Om vi ​​tittar ovan på programmeringsstrukturen förklaras funktionerna först och deras implementering ges.

Överskridande: Syntaxen för ärft och implementering av funktioner är de viktigaste punkterna som ska märkas här. I exemplet ovan kan vi märka att deklarationen av funktion med offentliga nyckelord är helt annorlunda.

Och i C ++ avslutas klassdefinitionen med en halvkolon (;) och om vi behöver ärva basklassen till barnklassen använder vi kolon (:) -symbolen. Huvudfunktionen för åsidosättning observeras när objekt deklareras och initialiseras för klassen. Efter att vi har kallat funktioner som använder objekten kan vi sedan tydligt förstå begreppet att åsidosätta.

fördelar

  • Den huvudsakliga fördelen med dessa övervägande och överbelastning är tidsbesparande.
  • Spara minnesutrymme.
  • Kodens läsbarhet ökas.
  • Här för funktionsöverbelastningskoncept kan vi använda olika samma funktionsnamn för olika operationer och eliminera användningen av olika funktionsnamn.
  • Kodens flexibilitet och underhållbarhet blir enklare.
  • I händelse av åsidosättande kan barnklassen ha föräldraklassens funktioner och till och med ha sin egen implementering av den funktionen.
  • Objekten kan hänvisas till och funktionerna för både förälderklassen och barnklassen kan nås av barnklassen.

Slutsats

Vi har nu klart förstått begreppen både överbelastning och överskridande. Vid överbelastning måste vi se till att skillnaden i överbelastade funktioner existerar antingen baserat på returtyp eller parametrarna, även om funktionsdefinitionen inuti dem är densamma eller annorlunda.

Och i fråga om åsidosättande, eftersom det är ett objektorienterat programmeringskoncept, kan vi bara använda i form av klasser med hjälp av arvets funktionalitet.

Rekommenderade artiklar

Detta är en guide till överbelastning och överbestyrning i C ++. Här diskuterar vi introduktionen, hur fungerar det, syntax, exempel och fördelar med överbelastning och överbestyrning i C ++ med kodimplementering. Du kan också titta på följande artiklar för att lära dig mer -

  1. Överbelastning i C ++
  2. Överbelastning kontra överrider
  3. Övergripande i PHP
  4. Övergripande i C ++
  5. Övergripande i Java
  6. Polymorfism i Java
  7. Topp 11 funktioner och fördelar med C ++
  8. Övervägande i Python | Funktion och regler

Kategori: