0% au considerat acest document util (0 voturi)
132 vizualizări3 pagini

Sabloane C++

Documentul prezintă șabloanele în C++, care permit crearea de funcții și clase generice. Funcțiile generice definesc operații care pot fi aplicate unor tipuri de date variate, tipul de date fiind specificat ca parametru. De asemenea, documentul prezintă supraîncărcarea explicită a funcțiilor generice.

Încărcat de

Vasile Hîj
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
132 vizualizări3 pagini

Sabloane C++

Documentul prezintă șabloanele în C++, care permit crearea de funcții și clase generice. Funcțiile generice definesc operații care pot fi aplicate unor tipuri de date variate, tipul de date fiind specificat ca parametru. De asemenea, documentul prezintă supraîncărcarea explicită a funcțiilor generice.

Încărcat de

Vasile Hîj
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 3

20. abloane O caracteristic relativ nou n C++ este ablonul (template). Cu un ablon este posibil s creai funcii generice.

ntr-o funcie sau clas generic, tipul de date asupra cruia opereaz acestea este specificat ca un parametru. De aceea, putei folosi o funcie sau o clas cu mai multe tipuri de date diferite, fr s rescriei versiunile specifice acestora. Funcii generice O funcie generic definete un set general de operaii care vor fi aplicate unor tipuri de date variate. Unei astfel de funcii tipul de date asupra cruia va opera i este transmis ca parametru. Utiliznd acest mecanism, poate fi aplicat aceeai procedur unui domeniu larg de date. Crend o funcie generic, putei defini natura algoritmului, independent de date. O dat fcut acest lucru, atunci cnd se execut funcia, compilatorul genereaz automat codul corect pentru tipul de date folosit efectiv. n esen, cnd creai o funcie generic, creai o funcie care se suprancarc singur, automat. O astfel de funcie este creat cu ajutorul cuvntului cheie template. template <class Tip> tip-retur nume-functie(lista parametri) { //corpul functiei } Tip este un nume care ine locul tipului de date folosite de ctre funcie. Dar, el ine doar un loc pe care compilatorul l va nlocui automat cu tipul de date efectiv, atunci cnd va crea o versiune specific a funciei. #include<iostream.h> template <class X> void inlocuieste(X &a, X &b) { X temp; temp = a; a = b; b = temp; } main() { int i = 10, j = 20; float x = 10.1, y = 20.1; char a = 'x', b = 'z'; inlocuieste(i, j); inlocuieste(x, y); inlocuieste(a, b); cout<<i<<" "<<j<<endl; //output: 20 10 cout<<x<<" "<<y<<endl; //output: 20.1 10.1 cout<<a<<" "<<b<<endl; //output: z x }

O funcie cu dou clase generice #include<iostream.h> template <class tip1, class tip2> void function(tip1 x, tip2 y) { cout<<x<<" "<<y<<endl; } main() { function(10, "hi"); function(0.23, 12L); function('c', " "); return 0; } Suprancrcarea explicit a unei funcii generice Chiar dac o funcie ablon se suprancarc singur cnd este necesar, putei s o suprancrcai i explicit. Dac suprancrcai o funcie generic, atunci ea suprascrie (sau ascunde) funcia generic relativ la acea versiune specific. #include<iostream.h> template <class X> void inloc(X &a, X &b) { X temp; temp = a; a = b; b = temp; } //aceasta surpascrie versiunea genrica a inloc() void inloc(int &a, int &b) { int temp; temp = a; a = b; b = temp; cout<<" in functia inloc(int &, int &) suprascrisa.\n"; } main() { char 'a', 'b'; int 1, 2; inloc('a', 'b'); inloc(1, 2); //aplarea lui inloc() supraincarcat explicit return 0;

S-ar putea să vă placă și