C ++

C ++ Operaatori ülekoormus

C ++ Operaatori ülekoormus
Selles artiklis antakse juhend operaatori ülekoormamise kohta C-s++. Operaatori ülekoormus on C ++ programmeerimiskeele kasulik ja võimas funktsioon. C ++ võimaldab enamiku sisseehitatud operaatorite ülekoormamist. Selles õpetuses kasutame operaatori ülekoormusmehhanismi demonstreerimiseks mitmeid näiteid.

Mis on operaator?

Operaator on sümbol, mis tähistab kompilaatorit konkreetse toimingu sooritamiseks. Näiteks on C ++ -s mitmesuguseid operaatoreid, näiteks aritmeetikaoperaatorid, loogikaoperaatorid, suhtlusoperaatorid, määranguoperaatorid, bitipõhised operaatorid ja palju muud.

Mis on operaatori ülekoormus?

C ++ keel võimaldab programmeerijatel anda operaatoritele eritähendusi. See tähendab, et saate määratleda operaatori C-s kasutaja määratud andmetüüpide jaoks++. Näiteks „+” kasutatakse sisseehitatud andmetüüpide, näiteks int, float jne lisamiseks. Kahe tüüpi kasutaja määratletud andmete lisamiseks on vaja operaatorit „+” üle koormata.

Süntaks operaatori ülekoormuse jaoks

C ++ pakub operaatori ülekoormamiseks spetsiaalset funktsiooni, mida nimetatakse operaatoriks. Operaatori ülekoormamise süntaks on järgmine:

klassi näidisKlass


Avalik:
operaatori sümbol returnType (argumendid)



;

Siin on "operaator" märksõna ja "sümbol" on operaator, mida soovime üle koormata.

Näited

Nüüd, kui saate aru operaatori ülekoormuse üldisest kontseptsioonist, laseme läbi paar toimivat näidisprogrammi, et saaksite sellest ideest konkreetsemalt aru saada. Käsitleme järgmisi näiteid:

  1. Näide 1: operaatori ühekordne ülekoormus (1)
  2. Näide 2: operaatori ühekordne ülekoormus (2)
  3. Näide 3: binaaroperaatori ülekoormus
  4. Näide 4: operaatori suhteline ülekoormus

Näide 1: ühekordse operaatori ülekoormus (1)

Selles näites demonstreerime, kuidas unaaroperaatorit saab C-s üle koormata++. Nii ees- kui ka järelliite juurdekasvuoperaatorite ülekoormamiseks oleme määranud klassi „Square_Box” ja avalikud funktsioonid „operaator ++ ()” ja „operaator ++ (int)”. Funktsioonis “main ()” oleme loonud objekti “mySquare_Box1."Seejärel oleme rakendanud objekti" mySquare_Box1 "eesliite ja järelpärandi juurdekasvuoperaatorid, et näidata operaatorite ühetaolist ülekoormust.

# kaasata
nimeruumi kasutamine std;
klassi ruut_kast

privaatne:
ujuki pikkus;
ujuki laius;
ujuki kõrgus;
avalik:
Square_Box ()
Square_Box (ujuk l, ujuk w, ujuk h)

pikkus = l;
laius = w;
kõrgus = h;

// Operaatori ülekoormus - prefiksioperaator "++"
tühine operaator ++ ()

pikkus ++;
laius ++;
kõrgus ++;

// Operaatori ülekoormus - postfixi operaator "++"
tühine operaator ++ (int)

pikkus ++;
laius ++;
kõrgus ++;

tühi väljund ()

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.väljund ();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.väljund ();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.väljund ();
tagastama 0;

Näide 2: operaatori ühekordne ülekoormus (2)

See on veel üks näide, milles demonstreerime, kuidas unaaroperaatorit saab C-s üle koormata++. Nii ees- kui ka järelliite vähendusoperaatorite ülekoormamiseks oleme määranud klassi "Square_Box" ja avalikud funktsioonid "operaator - ()" ja "operaator - (int)". Funktsioonis “main ()” oleme loonud objekti “mySquare_Box1”. Seejärel oleme objekti “mySquare_Box1” rakendanud prefiksi ja postfixi vähendamise operaatorid.

# kaasata
nimeruumi kasutamine std;
klassi ruut_kast

privaatne:
ujuki pikkus;
ujuki laius;
ujuki kõrgus;
avalik:
Square_Box ()
Square_Box (ujuk l, ujuk w, ujuk h)

pikkus = l;
laius = w;
kõrgus = h;

// Operaatori ülekoormus - prefiksioperaator
tühine operaator - ()

pikkus--;
laius--;
kõrgus--;

// Operaatori ülekoormus - "-" postfix-operaator
tühine operaator - (int)

pikkus--;
laius--;
kõrgus--;

tühi väljund ()

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.väljund ();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.väljund ();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.väljund ();
tagastama 0;

Näide 3: binaaroperaatori ülekoormus

Nüüd vaatleme binaaroperaatorite ülekoormamise näidet. Binaaroperaatorite ülekoormuse süntaks erineb mõnevõrra operaatori unariaalse ülekoormamise süntaksist. Selles näites laadime operaatori „+” kahe objekti „Square_Box“ lisamiseks üle.

# kaasata
nimeruumi kasutamine std;
klassi ruut_kast

privaatne:
ujuki pikkus;
ujuki laius;
ujuki kõrgus;
avalik:
Square_Box ()
Square_Box (ujuk l, ujuk w, ujuk h)

pikkus = l;
laius = w;
kõrgus = h;

// Operaatori ülekoormus - operaator "+"
Operaator Square_Box + (const Square_Box ja obj)

Ruudu_kasti temp;
temp.pikkus = pikkus + obj.pikkus;
temp.laius = laius + obj.laius;
temp.kõrgus = kõrgus + obj.kõrgus;
tagasituleku temp;

tühine väljund ()

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), tulemus;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.väljund ();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.väljund ();
tulemus = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
tulemus.väljund ();
tagastama 0;

Näide 4: operaatori suhteline ülekoormus

Nüüd vaatleme relatsioonioperaatori ülekoormamise näidet. Relatsioonioperaatori ülekoormuse süntaks on täpselt nagu binaaroperaatori ülekoormamise oma. Selles näites koormame<” and “>”Operaatorid objektide“ Square_Box ”kasutamiseks.

# kaasata
nimeruumi kasutamine std;
klassi ruut_kast

privaatne:
ujuki pikkus;
ujuki laius;
ujuki kõrgus;
avalik:
Square_Box ()
Square_Box (ujuk l, ujuk w, ujuk h)

pikkus = l;
laius = w;
kõrgus = h;

// Operaatori ülekoormus - "<" operator
boolioperaator < (const Square_Box& obj)

kui (pikkus < obj.length)
return true;
muud
return false;

// Operaatori ülekoormus - operaator ">"
boolioperaator> (const Square_Box & obj)

kui (pikkus> obj.pikkus)
return true;
muud
return false;

tühi väljund ()

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);
booli tulemus;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.väljund ();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.väljund ();
tulemus = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
tagastama 0;

Järeldus

C ++ on üldotstarbeline ja paindlik programmeerimiskeel, mida kasutatakse laialdaselt erinevates valdkondades. See programmeerimiskeel toetab nii kompileerimis- kui ka tööaja polümorfismi. See artikkel näitas teile, kuidas teha operaatori ülekoormust C-s++. See on C ++ väga kasulik funktsioon, mis lisab arendajale lisapingutusi operaatori määratlemiseks ülekoormuse jaoks, kuid kindlasti muudab klassi kasutaja elu lihtsamaks.

Installige uusim OpenRA strateegiamäng Ubuntu Linuxi
OpenRA on tasuta / tasuta reaalajas strateegiamängumootor, mis loob uuesti Westwoodi varased mängud nagu klassikaline Command & Conquer: Red Alert. Ja...
Installige Linuxile uusim Dolphin Emulator for Gamecube & Wii
Dolphini emulaator võimaldab teil mängida valitud Gamecube & Wii mänge Linuxi personaalarvutites (PC). Vabalt saadaval oleva ja avatud lähtekoodiga m...
Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...