17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Fie douã obiecte “a” si “b” de tipul “IntArray”; dupã atribuirea a=b se ajunge ca<br />

cele douã obiecte sã continã adresa aceluiasi vector (numitã “vec”), iar modificãri <strong>în</strong><br />

vectorul din obiectul “b” se vor reflecta si <strong>în</strong> obiectul “a”. Exemplu:<br />

IntArray a , b;<br />

a.add(1); b.add (2);<br />

a = b;<br />

a.print (); // scrie 2<br />

b.set(0,-5); // pune in pozitia 0 din b valoarea -5<br />

a.print(); // scrie -5<br />

Copierea bit cu bit a datelor dintr-un obiect <strong>în</strong>tr-un alt obiect se numeste si copiere<br />

superficialã (“shallow copy”); copierea profundã (“deep copy”) foloseste fiecare<br />

pointer dintr-un obiect pentru a copia datele adresate prin acel pointer, astfel ca obiecte<br />

distincte sã foloseascã zone de date diferite (cu acelasi continut imediat dupã copiere).<br />

In C++ copierea profundã se face prin redefinirea operatorului de atribuire si prin<br />

definirea unui constructor prin copiere (“copy constructor”). Exemple:<br />

// constructor prin copiere pentru obiecte vector de intregi<br />

IntArray:: IntArray ( IntArray & a) {<br />

dmax= a.dmax; d = a.d; // copiere variabile intregi<br />

vec= new int [dmax]; // aloca memorie pentru vectorul din noul obiect<br />

for (int i=0;i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!