C ++

C ++ Operatør Overbelastning

C ++ Operatør Overbelastning
Denne artikel giver en guide til overbelastning af operatører i C++. Operatøroverbelastning er en nyttig og kraftfuld funktion i programmeringssproget C ++. C ++ tillader overbelastning af de fleste indbyggede operatører. I denne vejledning bruger vi flere eksempler til at demonstrere operatørens overbelastningsmekanisme.

Hvad er operatør?

En operatør er et symbol, der angiver over for compileren at udføre en bestemt operation. For eksempel er der forskellige typer operatører i C ++, såsom aritmetiske operatører, logiske operatører, relationsoperatører, tildelingsoperatører, bitvise operatører og mere.

Hvad er operatøroverbelastning?

C ++ - sproget giver programmører mulighed for at give operatører en særlig betydning. Dette betyder, at du kan omdefinere operatøren til brugerdefinerede datatyper i C++. For eksempel bruges “+” til at tilføje indbyggede datatyper, såsom int, float osv. For at tilføje to typer brugerdefinerede data er det nødvendigt at overbelaste "+" -operatøren.

Syntaks til operatøroverbelastning

C ++ har en speciel funktion kaldet "operatør" til operatøroverbelastning. Følgende er syntaksen for operatøroverbelastning:

klasse sampleClass

..
Offentlig:
returnType operator symbol (argumenter)
..

..
;

Her er "operator" et nøgleord, og "symbol" er den operator, som vi vil overbelaste.

Eksempler

Nu hvor du forstår det overordnede koncept med overbelastning af operatører, så lad os gennemgå et par eksempler på eksempler, så du kan forstå denne idé mere konkret. Vi vil dække følgende eksempler:

  1. Eksempel 1: Unary operatøroverbelastning (1)
  2. Eksempel 2: Unary operatøroverbelastning (2)
  3. Eksempel 3: Overbelastning af binær operatør
  4. Eksempel 4: Overbelastning af relationsoperatører

Eksempel 1: Unary operatøroverbelastning (1)

I dette eksempel vil vi demonstrere, hvordan en unary operatør kan overbelastes i C++. Vi har defineret klassen "Square_Box" og de offentlige funktioner, "operator ++ ()" og "operator ++ (int)," for at overbelaste både præfikset og postfix-inkrementoperatorerne. I funktionen “main ()” har vi oprettet objektet, “mySquare_Box1.”Vi har derefter anvendt præfiks- og postfix-forøgelsesoperatorerne på“ mySquare_Box1 ”-objektet for at demonstrere den unary operatørs overbelastning.

#omfatte
ved hjælp af namespace std;
klasse Square_Box

privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

længde = l;
bredde = w;
højde = h;

// Operator Overloading - "++" præfiksoperatør
ugyldig operatør ++ ()

længde ++;
bredde ++;
højde ++;

// Operatøroverbelastning - "++" postfix-operatør
ugyldig operator ++ (int)

længde ++;
bredde ++;
højde ++;

ugyldig output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
returnere 0;

Eksempel 2: Unary operatøroverbelastning (2)

Dette er et andet eksempel, hvor vi vil demonstrere, hvordan en unary operatør kan overbelastes i C++. Vi har defineret klassen "Square_Box" og de offentlige funktioner, "operator - ()" og "operator - (int)", for at overbelaste både præfiks- og postfix-dekrementoperatorerne. I funktionen “main ()” har vi oprettet “mySquare_Box1” -objektet. Vi har derefter anvendt præfiks- og postfix-dekrementeringsoperatorerne på “mySquare_Box1” -objektet.

#omfatte
ved hjælp af namespace std;
klasse Square_Box

privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

længde = l;
bredde = w;
højde = h;

// Operatøroverbelastning - "-" præfiksoperatør
ugyldig operatør - ()

længde--;
bredde--;
højde--;

// Operatøroverbelastning - "-" postfix-operatør
ugyldig operatør - (int)

længde--;
bredde--;
højde--;

ugyldig output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
returnere 0;

Eksempel 3: Overbelastning af binær operatør

Nu vil vi se på et eksempel på binær operatørs overbelastning. Syntaksen for binær operatøroverbelastning vil være noget forskellig fra unary operatøroverbelastning. I dette eksempel overbelaster vi "+" -operatøren for at tilføje to "Square_Box" -objekter.

#omfatte
ved hjælp af namespace std;
klasse Square_Box

privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

længde = l;
bredde = w;
højde = h;

// Operatøroverbelastning - "+" operatør
Square_Box operator + (con Square_Box & obj)

Square_Box temp;
Midlertidig.længde = længde + obj.længde;
Midlertidig.bredde = bredde + obj.bredde;
Midlertidig.højde = højde + obj.højde;
retur temp;

ugyldig output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0), mySquare_Box2 (2.0, 3.0, 5.0), resultat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produktion();
resultat = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
resultat.produktion();
returnere 0;

Eksempel 4: Overbelastning af relationsoperatører

Nu vil vi se på et eksempel på relationel operatøroverbelastning. Syntaksen for relationel operatøroverbelastning er ligesom den for binær operatøroverbelastning. I dette eksempel overbelaster vi “<” and “>”-Operatører til at anvende på“ Square_Box ”-objekterne.

#omfatte
ved hjælp af namespace std;
klasse Square_Box

privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

længde = l;
bredde = w;
højde = h;

// Operatøroverbelastning - "<" operator
bool-operatør < (const Square_Box& obj)

hvis (længde < obj.length)
returner sandt;
andet
returner falsk;

// Operatøroverbelastning - ">" operatør
bool operator> (const Square_Box & obj)

hvis (længde> obj.længde)
returner sandt;
andet
returner falsk;

ugyldig output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (2.0, 3.0, 5.0), mySquare_Box2 (4.0, 6.0, 8.0);
bool resultat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produktion();
resultat = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
returnere 0;

Konklusion

C ++ er et generelt og fleksibelt programmeringssprog, der er meget udbredt i en række forskellige domæner. Dette programmeringssprog understøtter både kompileringstid og runtime polymorfisme. Denne artikel viste dig, hvordan du udfører overbelastning af operatører i C++. Dette er en meget nyttig funktion i C ++, der tilføjer noget ekstra arbejde for udvikleren at definere operatøren til overbelastning, men det gør bestemt livet lettere for brugeren af ​​klassen.

Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...