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:
- Exempel 1: Unary Operator Overloading (1)
- Exempel 2: Unary Operator Overloading (2)
- Exempel 3: Överbelastning av binära operatörer
- 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.
#omfattaanvä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.
#omfattaanvä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.
#omfattaanvä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.
#omfattaanvä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.