Kas yra operatorius?
Operatorius yra simbolis, nurodantis kompiliatoriui atlikti tam tikrą operaciją. Pvz., C ++ yra įvairių tipų operatoriai, tokie kaip aritmetiniai operatoriai, loginiai operatoriai, reliaciniai operatoriai, priskyrimo operatoriai, bitų operatoriai ir kt.
Kas yra operatoriaus perkrova?
C ++ kalba leidžia programuotojams suteikti ypatingą reikšmę operatoriams. Tai reiškia, kad galite iš naujo apibrėžti vartotojo apibrėžtų duomenų tipų operatorių C++. Pvz., „+“ Naudojamas pridėti įmontuotus duomenų tipus, tokius kaip int, float ir kt. Norint pridėti dviejų tipų vartotojo apibrėžtus duomenis, būtina perkrauti operatorių „+“.
Operatoriaus perkrovos sintaksė
C ++ suteikia specialią funkciją, vadinamą „operatoriumi“, skirtą operatoriaus perkrovai. Toliau pateikiama operatoriaus perkrovos sintaksė:
klasės pavyzdysKlasė…
Vieša:
operatoriaus simbolis „returnType“ (argumentai)
…
…
;
Čia „operatorius“ yra raktinis žodis, o „simbolis“ - operatorius, kurį norime perkrauti.
Pavyzdžiai
Dabar, kai suprantate bendrą operatoriaus perkrovos sampratą, leiskite mums pereiti kelias veikiančias pavyzdines programas, kad galėtumėte konkrečiau suprasti šią idėją. Pateiksime šiuos pavyzdžius:
- 1 pavyzdys: Vienkartinio operatoriaus perkrova (1)
- 2 pavyzdys: Vienkartinio operatoriaus perkrova (2)
- 3 pavyzdys: Dvejetainio operatoriaus perkrova
- 4 pavyzdys: santykinis operatoriaus perkrovimas
1 pavyzdys: Vienkartinio operatoriaus perkrova (1)
Šiame pavyzdyje mes parodysime, kaip nevienodas operatorius gali būti perkrautas C++. Mes apibrėžėme klasę „Square_Box“ ir viešąsias funkcijas „operatorius ++ ()“ ir „operatorius ++ (int)“, kad perkrautume tiek priešdėlio, tiek postfikso prieaugio operatorius. Funkcijoje „main ()“ sukūrėme objektą „mySquare_Box1“.„Tada„ mySquare_Box1 “objektui pritaikėme priešdėlio ir postfix prieaugio operatorius, kad pademonstruotume, jog operatorius per daug perkrautas.
# įtrauktinaudojant vardų sritį std;
klasės „Square_Box“
privatus:
plūdės ilgis;
plūdės plotis;
plūdės aukštis;
vieša:
„Square_Box“ ()
„Square_Box“ (plūdinė l, plūdinė w, plūdinė h)
ilgis = l;
plotis = w;
aukštis = h;
// Operatoriaus perkrova - „++“ prefiksų operatorius
negaliojantis operatorius ++ ()
ilgis ++;
plotis ++;
aukštis ++;
// Operatoriaus perkrova - „++“ postfix operatorius
negaliojantis operatorius ++ (int)
ilgis ++;
plotis ++;
aukštis ++;
negaliojanti išvestis ()
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“.išvestis ();
„mySquare_Box1 ++“;
cout << "Dimensions of mySquare_Box1 = " << endl;
„mySquare_Box1“.išvestis ();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
„mySquare_Box1“.išvestis ();
grąžinti 0;
2 pavyzdys: Vienkartinio operatoriaus perkrova (2)
Tai yra dar vienas pavyzdys, kuriame mes parodysime, kaip vienetinis operatorius gali būti perkrautas C++. Mes apibrėžėme klasę „Square_Box“ ir viešąsias funkcijas „operatorius - ()“ ir „operatorius - (int)“, kad perkrautume tiek priešdėlio, tiek postfikso mažinimo operatorius. Funkcijoje „main ()“ sukūrėme objektą „mySquare_Box1“. Tada „mySquare_Box1“ objektui pritaikėme priešdėlio ir postfix mažinimo operatorius.
# įtrauktinaudojant vardų sritį std;
klasės „Square_Box“
privatus:
plūdės ilgis;
plūdės plotis;
plūdės aukštis;
vieša:
„Square_Box“ ()
„Square_Box“ (plūdinė l, plūdinė w, plūdinė h)
ilgis = l;
plotis = w;
aukštis = h;
// Operatoriaus perkrova - prefiksų operatorius
negaliojantis operatorius - ()
ilgis--;
plotis--;
aukštis--;
// Operatoriaus perkrova - "-" postfix operatorius
negaliojantis operatorius - (int)
ilgis--;
plotis--;
aukštis--;
negaliojanti išvestis ()
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“.išvestis ();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
„mySquare_Box1“.išvestis ();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
„mySquare_Box1“.išvestis ();
grąžinti 0;
3 pavyzdys: Dvejetainio operatoriaus perkrova
Dabar mes pažvelgsime į dvejetainių operatorių perkrovos pavyzdį. Dvejetainio operatoriaus perkrovos sintaksė šiek tiek skirsis nuo vienarūšio operatoriaus perkrovimo. Šiame pavyzdyje perkrausime „+“ operatorių, kad pridėtume du „Square_Box“ objektus.
# įtrauktinaudojant vardų sritį std;
klasės „Square_Box“
privatus:
plūdės ilgis;
plūdės plotis;
plūdės aukštis;
vieša:
„Square_Box“ ()
„Square_Box“ (plūdinė l, plūdinė w, plūdinė h)
ilgis = l;
plotis = w;
aukštis = h;
// Operatoriaus perkrova - operatorius „+“
Operatorius „Square_Box“ + (konst. „Square_Box“ ir obj)
Square_Box temp;
temp.ilgis = ilgis + obj.ilgis;
temp.plotis = plotis + obj.plotis;
temp.aukštis = aukštis + obj.aukštis;
grįžimo temperatūra;
negaliojanti išvestis ()
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), rezultatas;
cout << "Dimensions of mySquare_Box1 = " << endl;
„mySquare_Box1“.išvestis ();
cout << "Dimensions of mySquare_Box2 = " << endl;
„mySquare_Box2“.išvestis ();
rezultatas = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
rezultatas.išvestis ();
grąžinti 0;
4 pavyzdys: santykinis operatoriaus perkrovimas
Dabar mes pažvelgsime į reliacinių operatorių perkrovos pavyzdį. Reliacinių operatorių perkrovos sintaksė yra tokia pati kaip binarinių operatorių perkrovos sintaksė. Šiame pavyzdyje perkrausime „<” and “>“Operatorių kreiptis į„ Square_Box “objektus.
# įtrauktinaudojant vardų sritį std;
klasės „Square_Box“
privatus:
plūdės ilgis;
plūdės plotis;
plūdės aukštis;
vieša:
„Square_Box“ ()
„Square_Box“ (plūdinė l, plūdinė w, plūdinė h)
ilgis = l;
plotis = w;
aukštis = h;
// Operatoriaus perkrova - "<" operator
bool operatorius < (const Square_Box& obj)
jei (ilgis < obj.length)
grįžti tiesa;
Kitas
grąžinti klaidingą;
// Operatoriaus perkrova - operatorius ">"
„Bool“ operatorius> (const Square_Box & obj)
jei (ilgis> obj.ilgis)
grįžti tiesa;
Kitas
grąžinti klaidingą;
negaliojanti išvestis ()
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 rezultatas;
cout << "Dimensions of mySquare_Box1 = " << endl;
„mySquare_Box1“.išvestis ();
cout << "Dimensions of mySquare_Box2 = " << endl;
„mySquare_Box2“.išvestis ();
rezultatas = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
grąžinti 0;
Išvada
C ++ yra bendros paskirties ir lanksti programavimo kalba, plačiai naudojama įvairiose srityse. Ši programavimo kalba palaiko tiek kompiliavimo, tiek vykdymo laiko polimorfizmą. Šis straipsnis parodė, kaip atlikti operatoriaus perkrovą C++. Tai labai naudinga „C ++“ funkcija, kuri prideda papildomų pastangų kūrėjui apibrėžti perkrovos operatorių, tačiau tai neabejotinai palengvina klasės vartotojo gyvenimą.