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




Mai mult despre operatori

c


Mai mult despre operatori



O alta directie a dezvoltarii este de a furniza vectori cu operatii:

class Vec::public vector

Vec(Vec&);

~Vec()

void operator=(Vec&);

void operator*=(Vec&);

void operator*=(int);

//......

};

Observam modul in care constructorul pentru clasa derivata Vec::Vec() este definit pentru a transfera argumentele lui la constructorul pentru clasa de baza vector::vector(). Operatorul de atribuire este supraincarcat si poate fi definit astfel:

void Vec::operator=(Vec& a)

Atribuirea de Vec-uri acum copiaza elemente, in timp ce atribuirea de vectori copiaza pur si simplu structura care con­troleaza accesul la elemente. Totusi, ultima se intimpla cind se copiaza un vector fara utilizarea explicita a operatorului de atribuire:

(1) cind un vector este initializat prin atribuirea unui alt vector;

(2) cind un vector se paseaza ca argument;

(3) cind un vector se paseaza ca valoare returnata de la o functie.

Pentru a cistiga control in aceste cazuri pentru vectorii Vec, noi definim constructorul Vec(Vec&):

Vec::Vec(Vec& a) : (a.size())

Acest constructor initializeaza un Vec ca o copie a altuia si va fi apelat in cazurile mentionate precedent. Pentru operatori de forma = si +=, expresia din stinga este evident speciala si se pare natural ca ei sa se implementeze ca operatii asupra obiecte­lor notate prin acea expresie. In particular, este posibil pentru ei sa se schimbe valoarea primului lor operand. Pentru operatori de forma + si -, operandul sting nu necesita o atentie speciala. Noi am putea, de exemplu, sa transferam ambele argumente prin valoare si totusi sa capatam o implementare corecta a adunarii vectorilor. Vectorii pot fi mari, asa ca, pentru a elimina copi­erea, operanzii lui + se transfera operatorului operator+() prin referinta:

Vec operator+(Vec& a, Vec& b)

Iata un mic exemplu care poate fi executat daca se compilea­za cu declaratiile de vector prezentate anterior:

#include <stream.h>

void error(char* p)

void vector::set_size(int)

void vec::operator[](int i)

main()



Document Info


Accesari: 1072
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 )