Mógłbyś wytłumaczyć na czym to polega? Nie za bardzo rozumiem.
Ale co na czym polega? Polimorfizm czy użycie szablonów w tym przykładzie?
Polimorfizm to tzw. wielopostaciowość obiektu. Możesz używać danych fragmentów programu na wiele różnych sposobów.
Załóżmy, że masz klasę bazową A
, która posiada metodę wirtualną:
virtual void wypisz(){
cout<<"A"<<endl;
}
Następnie z tej klasy dziedziczona jest klasa B
, która definiuje metodę wypisz();
w swój sposób:
void wypisz(){
cout<<"B"<<endl;
}
Metoda wypisz();
z klasy B "przykrywa" metodę wypisz()
z klasy A, dzięki temu przy użyciu tej metody wyświetlnoy zostanie tekst, który znajduje się w obu tych metodach. Gdyby w klasie A
nie użyto słówka kluczowego virtual
, to po wywołaniu metody w taki sposób:
int main(){
A* a = new A;
A* b = new B;
a->wypisz();
b->wypisz();
}
wynikiem byłyby dwie litery A
. Jednak dzięki użytemu polimorfizmowi kolejno wyświetlane są A
i B
.
W polimorfizmie parametrycznym, chodzi o to, ze typy danych użytych na danym obiekcie. Fragmentom programu zostają nadane (lub nie nadane) typy, na których mają operować.
Ogólnie pojęcie szablonów jest tutaj: http://www.cplusplus.com/doc/tutorial/templates/
Natomiast polimorfizm oraz polimorfizm parametryczny tu: http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming#Parametric_Polymorphism