Czy polimorfizm występuje w przykładzie?

Czy polimorfizm występuje w przykładzie?
NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Witam. Czy polimorfizm występuje w danym przykładzie kodu?

Kopiuj
class a {
protected:
        ...

public:	
	virtual void wypisz() = 0;
};

template <typename T>
class b : public a {
protected:
	...

public:
        void wypisz() {
              ...
        }
};

class c : public b<char> {
public:
        ...
        nie ma metody wypisz();
        ...
}

int main() {
       c cos_tam;

       cos_tam.wypisz();
}
MA
  • Rejestracja: dni
  • Ostatnio: dni
1

Tak. Jest użyty polimorfizm parametryczny. Szablony. Występować występuje ale nie jest wykorzystywany.

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Mógłbyś wytłumaczyć na czym to polega? Nie za bardzo rozumiem.

allocer
  • Rejestracja: dni
  • Ostatnio: dni
0
niesuszek napisał(a):

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ą:

Kopiuj
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:

Kopiuj
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:

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.