Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Operatorul overloading

c


Operatorul overloading



Clasa reala ostream defineste operatorul << pentru a-l face convenabil sa scrie diferite obiecte cu o singura instructiune.

Pentru a defini @, unde @ este o 242e418c rice operator C++ pentru un tip definit de utilizator, noi definim o functie numita operator@ care are argumente de tip corespunzator. De exemplu:

class ostream;

ostream ostream::operator<<(char* p)

defineste operatorul <<, ca membru al clasei ostream, asa ca s<<p se interpreteaza ca s.operator<<(p) cind s este un ostream si p este un pointer spre caractere. Operatorul << este binar, dar functia operator<<(char*) pare la prima vedere sa aiba un singur argument; el totusi are de asemenea argumentul standard implicit this.

Revenind din ostream ni se permite sa aplicam << la rezulta­tul unei operatii de iesire. De exemplu, s<<p<<q se interpreteaza (s.operator << (p) ) .operator << (q). Acesta este modul in care operatiile sint furnizate pentru tipuri predefinite.

Utilizind setul de operatii furnizate cu membri publici ai clasei ostream, noi putem acum defini << pentru tipuri utilizator cum ar fi cel complex, fara a modifica declaratia clasei ostream:

ostream operator<<(ostream s, complex z)

//un complex are doua parti: real si imaginar

// se scrie un complex ca (real, imag)

Intrucit operator<<(ostream, complex) nu este o functie membru, este necesar sa explicitam argumentele ca sa fie binare.

Se vor scrie valorile in ordine corecta caci <<, ca si majoritatea operatorilor C++ se grupeaza de la stinga la dreapta; adica a<<b<<c inseamna (a<<b)<<c.

Compilatorul cunoaste diferenta dintre functiile membru si nemembru cind interpreteaza operatorii. De exemplu, daca z este o variabila complexa, s<<z va fi expandata utilizind apelul functiei standard (nemembru) operator<<(s,z).



Document Info


Accesari: 1076
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )