capitolul11 - CAPITOLUL 11 Suprancrcarea operatorilor...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
CAPITOLUL 11 Supraîncărcarea operatorilor SUPRAÎNCĂRCAREA OPERATORILOR 11.1. Moduri de supraîncărcare a operatorilor 11.6. Supraîncărcarea operatorului de 11.1.1. Supraîncărcarea prin funcţii membre atribuire = 11.1.2. Supraîncărcarea prin funcţii prietene 11.7. Supraîncărcarea operatorului de 11.2. Restricţii la supraîncărcarea operatorilor indexare [ ] 11.3. Supraîncărcarea operatorilor unari 11.8. Supraîncărcarea operatorilor new şi 11.4. Membrii constanţi ai unei clase delete 11.5. Supraîncărcarea operatorilor 11.9. Supraîncărcarea operatorului ( ) insertor şi extractor 11.10. Supraîncărcarea operatorului -> 11.11. Conversii 11.1. MODURI DE SUPRAÎNCĂRCARE A OPERATORILOR Supraîncărcarea (supradefinirea, termenul overloading ) operatorilor permite atribuirea de noi semnificaţii operatorilor uzuali (operatorilor intâlniţi pentru tipurile de date predefinite). Aşa cum am subliniat în numeroase rânduri, clasa reprezintă un tip de date (o mulţime de valori pentru care s-a adoptat un anumit mod de reprezentare şi o mulţime de operaţii care pot fi aplicate acestora). Astfel, operatorul + foloseşte la adunarea a două date de tip int, float sau double, însă aceluiaşi operator i se poate atribui semnificaţia de "alipire" a două obiecte de tipul şir , sau de adunare a două obiecte de tipul complex , vector sau matrice . Observaţie: Operatorii sunt deja supradefiniţi pentru a putea opera asupra mai multor tipuri de bază (de exemplu, operatorul + admite operanzi de tip int, dar şi float sau double), sau pot avea seminificaţii diferite (de exemplu, operatorul * poate fi folosit pentru înmulţirea a doi operanzi numerici sau ca operator de deferenţiere, operatorul >> poate avea semnificaţia de operator extractor sau operator de deplasare pe bit). Prin supraîncărcarea operatorilor, operaţiile care pot fi executate asupra instanţelor (obiectelor) unei clase pot fi folosite ca şi în cazul tipurilor de date predefinite. Exemplu: Pentru clasa punct (vezi capitolul 10), putem atribui operatorului + semnificaţia: expresia a+b (a, b sunt obiecte din clasa punct) reprezintă "suma" a două puncte şi este un punct ale cărui coordonate sunt date de suma coordonatelor punctelor a şi b. Astfel, supradefinirea operatorului + constă în definrea unei funcţii cu numele: operator + tip_val_întoarsă operator op (lista_declar_parametri) { // . . . . corpul funcţiei } Deci, limbajul C++ permite supradefinirea operatorului op prin definirea unei funcţii numite operator op Funcţia trebuie să poată accesa datele membre private ale clasei, deci s upradefinirea operatorilor se poate realiza în două moduri : printr-o funcţie membră a clasei; printr-o funcţie prietenă a clasei. 11.1.1.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 2
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 08/10/2009 for the course SCIENCES UBC02005 taught by Professor Ionpaniat during the Spring '09 term at 東京大学.

Page1 / 32

capitolul11 - CAPITOLUL 11 Suprancrcarea operatorilor...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online