Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is-ab:laboratoare:05 [2025/09/23 23:06]
razvan.cristea0106 [Introducere]
poo-is-ab:laboratoare:05 [2025/10/11 20:12] (current)
razvan.cristea0106 [Supraîncărcarea operatorilor]
Line 112: Line 112:
  Persoana persoana(22,​ "​Andrei"​);​  Persoana persoana(22,​ "​Andrei"​);​
  
- afisarePersoana(persoana);​+ afisarePersoana(persoana); ​// apelarea functiei friend este identica cu a unei functii clasice din C/C++
  
  return 0;  return 0;
Line 120: Line 120:
 În mod evident puteam declara și implementa o metodă simplă de afișare în loc să optăm pentru o funcție **friend**. Trebuie însă menționat faptul că este doar un exemplu didactic pentru a putea înțelege cum putem folosi funcțiile **friend** în limbajul C++. În mod evident puteam declara și implementa o metodă simplă de afișare în loc să optăm pentru o funcție **friend**. Trebuie însă menționat faptul că este doar un exemplu didactic pentru a putea înțelege cum putem folosi funcțiile **friend** în limbajul C++.
  
-<note warning>​Deși sunt declarate în interiorul clasei **funcțiile friend** se numesc **funcții** și **nu metode** datorită faptului că **nu** primesc **pointerul this** în lista de parametri. Cuvântul cheie **friend** se utilizează **doar** la declararea funcției pentru a înștința compilatorul că este vorba despre o **funcție** și **nu** despre o **metodă**,​ iar implementarea acesteia este **identică** cu a unei **funcții clasice din C++**.</​note>​+<note warning>​Deși sunt declarate în interiorul clasei **funcțiile friend** se numesc **funcții** și **nu metode** datorită faptului că **nu** primesc **pointerul this** în lista de parametri. Cuvântul cheie **friend** se utilizează **doar** la declararea funcției pentru a anunța compilatorul că este vorba despre o **funcție** și **nu** despre o **metodă**,​ iar implementarea acesteia este **identică** cu a unei **funcții clasice din C/C++**.</​note>​
  
 Vom folosi foarte mult acest tip de funcții după cum vom vedea în cele ce urmează la supraîncărcarea operatorilor limbajului C++. Vom folosi foarte mult acest tip de funcții după cum vom vedea în cele ce urmează la supraîncărcarea operatorilor limbajului C++.
Line 245: Line 245:
 </​code>​ </​code>​
  
-<note important>​Se poate observa ​ca la **forma postfixată** avem un parametru de care **nu** ne folosim. Acel parametru este **doar** pentru a asigura **polimorfismul**,​ compilatorul făcând distincția între cele două variante de operator de incrementare.</​note>​+<note important>​Se poate observa ​că la **forma postfixată** avem un parametru de care **nu** ne folosim. Acel parametru este **doar** pentru a asigura **polimorfismul**,​ compilatorul făcând distincția între cele două variante de operator de incrementare.</​note>​
  
 Pentru **operatorul de decrementare** se aplică aceleași **exact** aceeași pași, încercați să îl implementați voi pentru a putea înțelege mai bine cum funcționează conceptul de **overloading**. Pentru **operatorul de decrementare** se aplică aceleași **exact** aceeași pași, încercați să îl implementați voi pentru a putea înțelege mai bine cum funcționează conceptul de **overloading**.
Line 299: Line 299:
 == Supraîncărcarea operatorilor == și != == == Supraîncărcarea operatorilor == și != ==
  
-**Operatorul %%==%%** este folosit pentru a testa egaliatetea ​dintre doi operanzi, deci prin urmare trebuie să returneze o valoare de adevăr (**true** sau **false**). Îl supraîncârcăm ca funcție membră, deoarece avem deja un parametru existent, și anume **pointerul this**, la care mai adăugăm un alt parametru care reprezintă **obiectul cu care facem comparația**.+**Operatorul %%==%%** este folosit pentru a testa egalitatea ​dintre doi operanzi, deci prin urmare trebuie să returneze o valoare de adevăr (**true** sau **false**). Îl supraîncârcăm ca funcție membră, deoarece avem deja un parametru existent, și anume **pointerul this**, la care mai adăugăm un alt parametru care reprezintă **obiectul cu care facem comparația**.
  
 Același lucru putem spune și despre **operatorul %%!=%%**, numai că el face exact **opusul** a ceea ce face operatorul de testare a egalității între doi operanzi, adică verifică dacă valorile celor doi termeni sunt **diferite**. Același lucru putem spune și despre **operatorul %%!=%%**, numai că el face exact **opusul** a ceea ce face operatorul de testare a egalității între doi operanzi, adică verifică dacă valorile celor doi termeni sunt **diferite**.
Line 543: Line 543:
 istream&​ operator>>​(istream&​ in, NrComplex&​ z) istream&​ operator>>​(istream&​ in, NrComplex&​ z)
 { {
- cout << "​Introduceti partea reala a numarului complex: ";+ std::cout << "​Introduceti partea reala a numarului complex: ";
  in >> z.real;  in >> z.real;
  
- cout << "​Introduceti partea imaginara a numarului complex: ";+ std::cout << "​Introduceti partea imaginara a numarului complex: ";
  in >> z.imaginar;  in >> z.imaginar;
  
poo-is-ab/laboratoare/05.1758657997.txt.gz · Last modified: 2025/09/23 23:06 by razvan.cristea0106
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0