References

  • Uploaded by: Patrick Johnston
  • 0
  • 0
  • July 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View References as PDF for free.

More details

  • Words: 399
  • Pages: 1
References - Referinţe O referinţă este un nume alternativ pentru un obiect. Principala folosire a referinţelor este pentru a specifica argumentele şi valorile returnate pentru funcţii în general şi pentru supraîncărcarea operatorilor în particular. Notaţia &X înseamnă referinţă la X. Iniţializarea unei referinţe este obişnuită când iniţializatorul este o l-valoare (un obiect a cărui adresă o puteţi obţine). Iniţializatorul pentru un “banal” T& trebuie să fie o l-valoare de tip T. Iniţializatorul pentru un const T& nu trebuie să fie neapărat o l-valoare sau chiar de tip T. În acest caz: 1. mai întâi, conversia implicită la T este aplicată dacă este necesară; 2. apoi, valoarea rezultată este pusă într-o variabilă temporară de tip T; 3. în cele din urmă, această variabilă temporară este folosită ca valoare a iniţializatorului. De exemplu: const int& cir = 1; Interpretarea acestei iniţializări ar putea fi: int temp = temp(1); //mai întâi se creează o variabilă temporară cu valoarea cerută const int& cir = temp; //apoi se foloseşte această variabilă pentru iniţializarea lui cir O referinţă poate fi folosită pentru a specifica un argument pentru o funcţie în aşa fel încât funcţia poate schimba valoarea unui obiect care i-a fost trimis ca argument. De exemplu: void increment(int& aa) {aa++;} // “aa” este argumentul de tip referinta la int al functiei void main() { int x = 1; increment(x); // se face conversia lui int x la int& x } Semantica trimiterii argumentului este definită ca aceea a iniţializării, astfel încât când este apelat, argumentul formal “aa” devine un alt nume pentru x. Pentru a păstra programele uşor de înţeles, cel mai bine este să evitaţi funcţiile care modifică argumentele. Mai bine faceţi ca funcţia să returneze o valoare sau folosiţi un pointer ca argument. De exemplu: int increment_v(int p) {return p+1;} void increment_p(int* p) {(*p)++;} Notaţia increment(x) nu dă nici un indiciu cititorului că valoarea x urmează să fie modificată, celelalte două (increment_v şi increment_p) dau. În consecinţă, “simplele” argumente de tip referinţă ar trebui să fie folosite doar unde numele funcţiei oferă o puternică idee că argumentul referinţă este modificat. Referinţele pot de asemenea fi folosite pentru a defini funcţii care pot fi folosite în ambele părţi ale unei asignări (stânga – left-hand şi dreapta – right-hand). Din nou, multe din cele mai interesante folosiri ale acestora sunt găsite în crearea neobişnuitelor tipuri definite de utilizator. Vezi p. 99 din Bjarne Stroustrup.

Related Documents

References
June 2020 12
References
October 2019 28
References
May 2020 19
References
October 2019 28
References
April 2020 20
References
July 2020 9

More Documents from ""