Functii Si Clase Generice - C++ [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Şabloane (Tamplate) Folosind cuvântul cheie template se pot crea şabloane pentru funcţii şi clase, numite funcţii generice, respectiv clase generice. Într-o funcţie sau clasă generică tipul de date asupra căruia operează acestea este specificat ca un parametru. Aceste funcţii şi clase se pot folosi cu diferite tipuri de date fără a rescrie versiunile specifice fiecărui tip.

Funcţii generice O funcţie generică defineşte un set de operaţii care vor fi aplicate unor tipuri de date variate. În definirea clasică a funcţiilor, pentru a transpune acelaşi algoritm mai multor tipuri de date, este necesară rescrierea procedurii. Dacă se defineşte o funcţie generică, la execuţia funcţiei, compilatorul generează automat codul corect pentru tipul de date folosit efectiv. În esenţă, se creează o funcţie care se supraîncarcă singură automat. Pentru crearea unei funcţii generice se foloseşte cuvântul cheie template. Sintaxa generală folosită pentru definirea unei funcţii generice este: template < class Tip1, class Tip2,…,class Tipn > tip_retur nume_functie (lista_parametri) { // corp funcţie } Tipurile de date sunt precedate de cuvântul cheie class, ceea ce nu înseamnă însă că pot fi doar tipuri de date declarate cu class, ci pot fi orice tipuri de date. Tip1,Tip2,...sunt nume care ţin locul unor tipuri de date folosite de funcţie. Ele ţin doar loc tipurilor de date pe care le va înlocui automat compilatorul la execuţia funcţiei. În exemplul următor este definită o funcţie generică de inversare a valorilor a două variabile. #include < conio.h > #include < iostream.h > template void inversare ( T & a, T & b) { T aux; aux = a; a = b; b = aux; } class complex

{ double re, im; public: complex(double r = 0, double i = 0) { re = r; im = i;} void afisare() { cout