Wat is overbelasting in C ++?

Met C ++ kan flexibel en eenvoudig te begrijpen code worden geschreven met behulp van het concept dat bekend staat als Overbelasting. Hiermee kunnen verschillende functies binnen de bestaande code worden bereikt met zeer minimale wijzigingen, waardoor de dubbele code wordt verminderd. Kortom, er zijn hoofdzakelijk twee primaire soorten overbelasting die worden ondersteund door C ++.

Met C ++ kunnen we functies schrijven met dezelfde naam, maar met het verschil in gegevenstypen of het aantal doorgegeven argumenten, deze functie staat bekend als Functie-overbelasting in C ++. Met deze functie kunnen ontwikkelaars de functies met dezelfde naam binnen hetzelfde bereik definiëren. Met dezelfde naam vertegenwoordigen de functies dezelfde functionaliteit waardoor polymorfisme tijdens de compilatie mogelijk is. De functie overbelasting heeft één voordeel dat het de leesbaarheid van de code verbetert.

Er is een andere functie in C ++ waarmee de bestaande functionaliteit van ingebouwde operators opnieuw kan worden gedefinieerd, ook wel Operator Overloading genoemd . Met deze functie kunnen ingebouwde operators worden gebruikt op door de gebruiker gedefinieerde typen. Overbelasting van de operator vereenvoudigt de code door de functionaliteit opnieuw te definiëren volgens de gebruikersvereisten. In dit artikel zullen we ons concentreren op zowel de functie overbelasting als de operator overbelasting, we zullen de details ervan zien en hoe het wordt gebruikt in C ++.

Hoe werkt overbelasting in C ++?

  • Functieoverbelasting: hiermee kunnen we de functie met dezelfde naam definiëren, maar het onderscheidt de functies afhankelijk van het type parameters dat eraan wordt doorgegeven of het aantal parameters dat eraan wordt doorgegeven. Alle functies hebben dus dezelfde naam, maar hebben een ander datatype of er worden een ander aantal parameters aan doorgegeven. Wanneer de functie wordt aangeroepen, kiest de compiler de functie met het overeenkomende type parameter en met het aantal argumenten. Nu kunnen de ontwikkelaars kiezen welke functie ze moeten oproepen volgens de vereisten. Ze kunnen de juiste functie kiezen door de parameters volgens de regels door te geven.
  • Overbelasting van operator: hiermee kunnen operators werken voor door de gebruiker gedefinieerde gegevenstypen, dwz klassen. De bestaande operators zijn overbelast en krijgen de kracht om te werken op de door de gebruiker gedefinieerde klasse en objecten. Overbelasting van de operator wordt bereikt door de functie met de speciale naam te definiëren. De functie krijgt de naam 'operator' gevolgd door het operatorsymbool. We kunnen het operatorsymbool rechtstreeks op het door de gebruiker gedefinieerde gegevenstype gebruiken en de bewerking uitvoeren. De noodzakelijke actie of bewerking wordt door ons in die speciale functie gedefinieerd. Door middel van operatoroverbelasting kunnen we verschillende typen bewerkingen uitvoeren op hetzelfde type gegevenstype.

Typen overbelasting in C ++

Overbelasting van de functie kan hoe dan ook worden bereikt wat betreft het gebruik van parameters. Als we zeggen gebruik van parameters, verwijst dit naar het type parameters of het aantal parameters of een reeks parameters. Dus functie calc (int x, float y) met parameters (int x, float y) is anders dan een functie gedefinieerd als calc (float x, int y) die verschillende parameters hebben met het verschillende datatype.

Er kunnen een aantal typen zijn waarin functieoverbelasting kan worden bereikt, laten we het eenvoudige voorbeeld van functieoverbelasting in C ++ bekijken.

#include
using namespace std;
class Display (
public:
static void show (char message() ) (
cout<< "Only Message:" << message << endl;
)
static void show (int messageId, char message()) (
cout<< "Message with Id:";
cout << messageId << " Message:" << message << endl;
)
);
int main (void) (
Display obj;
char message() = "Welcome";
int messageId = 10;
obj.show(message); //calling overloaded function with 1 parameter
obj.show(messageId, message);//calling overloaded function with 2 parameters
return 0;
)

Hier hebben we klasse Display met een overbelaste methode show. De showmethode wordt aangeroepen, afhankelijk van de argumenten die eraan worden doorgegeven.

Output:

Alleen bericht: welkom

Een bericht met Id: 10 Bericht: Welkom

Overbelasting van de operator kan worden bereikt op bijna alle ingebouwde gegevenstypen die beschikbaar zijn in C ++. Er zijn als zodanig geen verschillende typen overbelasting van de operator, maar de benaderingen kunnen verschillen die worden gebruikt om overbelasting van de operator te bereiken. Operators zoals Unary, Binary, Relational, Assignment, enz. Kunnen worden overbelast in C ++.

Laten we het eenvoudige voorbeeld van overbelasting van ++ operator bekijken. In dit voorbeeld gebruiken we de operator ++ in plaats van het primitieve gegevenstype op het door de gebruiker gedefinieerde klasseobject.

#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)
#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)

We hebben dus een object waarvan de initiële hoogte wordt ingesteld op 80 en wordt verhoogd met 5 wanneer we de ++ operator erover aanroepen.

Output:

De hoogte van de fiets is: 80
De hoogte van de fiets is: 85

Regels voor overbelasting in C ++

Hieronder staan ​​de verschillende C ++ overbelastingsregels als volgt:

Regels voor de functie overbelasting

  • Bij functie-overbelasting moet de functie verschillen in datatype, aantal of reeks parameters. Het kan niet eenvoudig verschillen op basis van het retourtype van functie.

Regels voor overbelasting van de operator

  • Alleen ingebouwde operators kunnen worden overbelast, de nieuwe operators kunnen niet worden overbelast.
  • Er zijn vier operators die niet kunnen worden overbelast, dit zijn . (ledenselectie), :: (bereikresolutie), . * (ledenselectie met aanwijzer naar functie) en?: (ternaire operator).
  • De overbelaste operator zal ten minste één operand van het door de gebruiker gedefinieerde gegevenstype bevatten.
  • Er zijn bepaalde operators die niet kunnen worden overbelast met behulp van de vriendenfunctie, maar ze kunnen wel worden overbelast als lidfunctie.

Conclusie

De overbelasting in C ++ is dus de unieke functie die ons meerdere voordelen biedt. Er zijn hoofdzakelijk twee soorten overbelasting, dat wil zeggen functieoverbelasting en operatoroverbelasting. Overbelasting van functies verbetert de leesbaarheid van de code en behoudt dus dezelfde naam voor dezelfde actie. Overbelasting van de operator maakt herdefiniëring van de bestaande functionaliteit van operators mogelijk door ze een speciale betekenis te geven. Beide zijn erg handig bij het programmeren in C ++.

Aanbevolen artikelen

Dit is een gids voor overbelasting in C ++. Hier bespreken we de werking, regels en twee soorten overbelasting in c ++, namelijk functieoverbelasting en operatoroverbelasting. U kunt ook het volgende artikel bekijken voor meer informatie -

  1. Overbelasting in PHP
  2. Kopieer Constructor in C ++
  3. Overbelasting versus opheffen
  4. Switch-verklaring in C ++
  5. Overbelasting in Java
  6. Python overbelast