sâmbătă, 14 februarie 2009

Supraincarcarea Operatorilor si Functiilor

SUPRAÎNCĂRCAREA OPERATORILOR ŞI FUNCŢIILOR
Supraîcărcarea funcţiilor independente şi a funcţiilor membre
Aspecte generale şi restricţii pentru supraîncărcrea operatorilor
Supraîmcărcarea operatorilor unari ++ şi –-
Supraîncărcarea operatorilor binari
Supraîncărcarea operatorului []
Supraîncărcarea operatorilor new şi delete
Supraîncărcarea operatorului cast
Supraîncărcarea operatorului vitgulă
Supraîncărcarea operatorului funcţie
Supraîncărcarea operatorilor >> şi <<
Supraîncărcarea operatorului ->
Conversii între obiecte de diferite tipuri
Supraîcărcarea funcţiilor independente şi a funcţiilor membre
Supraîncărcarea (overloading) funcţiilor şi operatorilor reflectă posibilitatea de a atribui unui simbol mai multe semnificaţii.
Funcţie polimorfică : funcţie care efectuează prelucrări diferite de la un context la altul
Selecţia funcţiei dintr-un set de funcţii se face pornind de la signatura funcţiei (numărul şi tipul parametrilor)
În procesul de selecţie pot apare erori
Ambiguitate (compilare)
Simbol nedefint(linkeditare)
OBS. Valoarea returnată de o funcţie nu este criteriu de identificare a versiunii de apelat
Supraîcărcarea funcţiilor independente şi a funcţiilor membre
Etapele selecţiei funcţiei de apelat:
Dupa signatură fără conversii
Se operează conversii nedegradante (char şi short în int; float în double)
void f(double&,double);
double b; float a=5.5; f(b,a);
Se operează conversii degradante (numeric în numeric indiferent de tip; între pointeri de orice tip şi void ; de la pointer de clasă derivată la pointer de clasă de bază)
void f(double&,int);
double b; float a=5.5; f(b,a);
Aplicarea eventualelor conversii introduse de utilizator (supraîncărcarea operatorului cast)
........DesktopMicrosoft Visual C++ 6.0.lnk (Ex.PooSO00)
Aspecte generale şi restricţii pentru supraîncărcrea operatorilor
Operatorii sunt asimilaţi unor funcţii cu nume format din cuvântul cheie operator şi simbolul grafic al operatorului din limbaj
operator();
double operator+=(double);
Operatorii apar ca funcţii care au şi forme simple de apel
a-b este echivalent cu a.operator-(b)
Cu semnificaţia: funcţia membră numită operator-() aparţinând obiectului a este apelată având ca parametru de intrare obiectul b.

Un comentariu: