C ++

C ++ överbelastning av operatören

C ++ överbelastning av operatören
Denna artikel ger en guide till överbelastning av operatörer i C++. Överbelastning av operatörer är en användbar och kraftfull funktion i programmeringsspråket C ++. C ++ möjliggör överbelastning av de flesta inbyggda operatörer. I den här självstudien kommer vi att använda flera exempel för att visa operatörens överbelastningsmekanism.

Vad är operatör?

En operatör är en symbol som indikerar att kompilatorn ska utföra en viss operation. Det finns till exempel olika typer av operatörer i C ++, såsom aritmetiska operatörer, logiska operatörer, relationsoperatörer, tilldelningsoperatörer, bitvisa operatörer och mer.

Vad är operatörens överbelastning?

C ++ - språket gör det möjligt för programmerare att ge operatörer särskilda betydelser. Detta innebär att du kan omdefiniera operatören för användardefinierade datatyper i C++. Till exempel används "+" för att lägga till inbyggda datatyper, såsom int, float, etc. För att lägga till två typer av användardefinierade data är det nödvändigt att överbelasta operatören “+”.

Syntax för operatörsöverbelastning

C ++ tillhandahåller en speciell funktion som kallas "operatör" för operatörsöverbelastning. Följande är syntaxen för operatörsöverbelastning:

class sampleClass

..
Offentlig:
returnType-operatörssymbol (argument)
..

..
;

Här är "operatör" ett nyckelord och "symbol" är den operatör som vi vill överbelasta.

Exempel

Nu när du förstår det övergripande konceptet med operatörsöverbelastning, låt oss gå igenom ett par arbetsexempelprogram för att du ska förstå denna idé mer konkret. Vi kommer att täcka följande exempel:

  1. Exempel 1: Unary Operator Overloading (1)
  2. Exempel 2: Unary Operator Overloading (2)
  3. Exempel 3: Överbelastning av binära operatörer
  4. Exempel 4: Relationsoperatörsöverbelastning

Exempel 1: Unary Operator Overloading (1)

I det här exemplet kommer vi att visa hur en unary operatör kan överbelastas i C++. Vi har definierat klassen "Square_Box" och de offentliga funktionerna, "operator ++ ()" och "operator ++ (int)," för att överbelasta både prefixet och postfix-inkrementoperatorerna. I funktionen “main ()” har vi skapat objektet, “mySquare_Box1.”Vi har sedan tillämpat prefix- och postfix-inkrementoperatorerna på objektet“ mySquare_Box1 ”för att visa att den unary operatören överbelastar.

#omfatta
använder namnrymd std;
klass Square_Box

privat:
flottörlängd;
flottörbredd;
flottörhöjd;
offentlig:
Fyrkantig låda()
Square_Box (float l, float w, float h)

längd = l;
bredd = w;
höjd = h;

// Operator Overloading - "++" prefix operator
ogiltig operatör ++ ()

längd ++;
bredd ++;
höjd ++;

// Operator Overloading - "++" postfix operator
ogiltig operatör ++ (int)

längd ++;
bredd ++;
höjd ++;

ogiltig utgång ()

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();
returnera 0;

Exempel 2: Unary Operator Overloading (2)

Detta är ett annat exempel där vi kommer att visa hur en unary operatör kan överbelastas i C++. Vi har definierat klassen "Square_Box" och de offentliga funktionerna, "operator - ()" och "operator - (int)," för att överbelasta både prefix- och postfix-minskningsoperatorerna. I "main ()" - funktionen har vi skapat "mySquare_Box1" -objektet. Vi har sedan tillämpat prefix- och postfix-minskningsoperatorerna på “mySquare_Box1” -objektet.

#omfatta
använder namnrymd std;
klass Square_Box

privat:
flottörlängd;
flottörbredd;
flottörhöjd;
offentlig:
Fyrkantig låda()
Square_Box (float l, float w, float h)

längd = l;
bredd = w;
höjd = h;

// Operator Overloading - "-" prefix operator
ogiltig operatör - ()

längd--;
bredd--;
höjd--;

// Operatörsöverbelastning - "-" postfix-operatör
ogiltig operatör - (int)

längd--;
bredd--;
höjd--;

ogiltig utgång ()

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();
returnera 0;

Exempel 3: Överbelastning av binära operatörer

Nu ska vi titta på ett exempel på överbelastning av binära operatörer. Syntaxen för binär operatörsöverbelastning kommer att skilja sig något från unary operatörsöverbelastning. I det här exemplet kommer vi att överbelasta operatören "+" för att lägga till två "Square_Box" -objekt.

#omfatta
använder namnrymd std;
klass Square_Box

privat:
flottörlängd
flottörbredd;
flottörhöjd;
offentlig:
Fyrkantig låda()
Square_Box (float l, float w, float h)

längd = l;
bredd = w;
höjd = h;

// Operatörsöverbelastning - "+" operatör
Square_Box operator + (const Square_Box & obj)

Square_Box temp;
temp.längd = längd + objekt.längd;
temp.bredd = bredd + objekt.bredd;
temp.höjd = höjd + objekt.höjd;
retur temp;

ogiltig utgång ()

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();
returnera 0;

Exempel 4: Relationsoperatörsöverbelastning

Nu kommer vi att titta på ett exempel på relationell operatörsöverbelastning. Syntaksen för relationsoperatörsöverbelastning är precis som den för binär operatörsöverbelastning. I det här exemplet kommer vi att överbelasta<” and “>”-Operatörer att applicera på” Square_Box ”-objekten.

#omfatta
använder namnrymd std;
klass Square_Box

privat:
flottörlängd
flottörbredd;
flottörhöjd;
offentlig:
Fyrkantig låda()
Square_Box (float l, float w, float h)

längd = l;
bredd = w;
höjd = h;

// Överbelastning av operatören - "<" operator
bool-operatör < (const Square_Box& obj)

om (längd < obj.length)
återvänd sant;
annan
returnera falsk;

// Överbelastning av operatör - ">" operatör
bool-operatör> (const Square_Box & obj)

om (längd> obj.längd)
återvänd sant;
annan
returnera falsk;

ogiltig utgång ()

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;
returnera 0;

Slutsats

C ++ är ett allmänt och flexibelt programmeringsspråk som används i stor utsträckning inom en mängd olika domäner. Detta programmeringsspråk stöder både sammanställningstid och körtidspolymorfism. Den här artikeln visade dig hur du utför överbelastning av operatörer i C++. Detta är en mycket användbar funktion i C ++ som ger lite extra ansträngning för utvecklaren att definiera operatören för överbelastning, men det gör definitivt livet enklare för användaren av klassen.

Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...
Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider är det tolfte tillskottet till Tomb Raider-serien - en action-äventyrsspelfranchise skapad av Eidos Montreal. Spelet mottogs...
Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...