Generičko programiranje — разлика између измена

Садржај обрисан Садржај додат
Ред 146:
y=Kvadrat<int>(x);
</syntaxhighlight>
Pogodno je da se klase i funkcije mogu pisati generički, parametrizovano tipovima podataka. Takve generičke klase i funkcije nazivaju se u jeziku C++  šablonima (templates). Iz šablona se generišu stvarne klase, odnosno funkcije, za konkretne tipove. Generički mehanizam<ref>[http://www.ftn.kg.ac.rs/publikacije/IT/3%20linkovi%20i%20prilozi/_private/Programski%20jezici/Ostale%20strane/IZDVAJAMO%20IZ%20SADRZAJA.htm#Generički&#x20;mehanizam&#x20;(šabloni) Generički mehanizam]</ref> je u potpunosti statički -substitucija parametara je u vreme prevođenja. Funkcijski šablon se ne koristi dok kompajler ne naiđe na poziv generičke funkcije. Tek tada se stvara i prevodi nova varijanta funkcije u zavisnosti o tipu na kojem je funkcija pozvana. Taj proces stvaranja nove konkretne varijante funkcije iz funkcijskog šablona naziva se instancijacija. Tipovi se kod funkcijskih šablona prepoznaju automatski. Zbog toga se i definicija i implementacija takvih funkcija piše u .h datoteku. Kompajler tek u trenutlkutrenutku poziva funkcije može odrediti način kako se prevodi generička funkcija, stoga su generičke funkcije po upotrebi  ekvivalentne makro naredbama. Da bi se moglo izvršiti kompajliranje programa u kojem se koristi generička funkcija, kompajleru mora biti na raspolaganju potpuna definicija funkcije, a ne samo deklaracija funkcije kao što je slučaj kod upotrebe regularnih funkcija.
 
Generički tip T se može koristiti unutar funkcije za oznaku tipa lokalne promenljive:<syntaxhighlight lang="java">
Ред 165:
25
118.81
</syntaxhighlight>Ne mora se uvek, pri pozivu funkcije, specificirati generički tip ako se iz tipova argumenata nedvosmisleno može zaključiti koji se parametričkiparametarski tip koristi.<syntaxhighlight lang="c++">
int i=5,k;
float a=10.9,b;
Ред 182:
ili još jednostavnije<syntaxhighlight lang="java">
i=GetMin (j,l);
</syntaxhighlight>Iako su j Ii l različitog tipa, kompajler sam vrši konverzije integralnih tipova.
 
== Generički klasni tipovi<ref>[http://poincare.matf.bg.ac.rs/~stasa/OOP/Cas%2009.pdf Generički klasni tipovi]</ref> ==