Witam.
Może mi ktoś wyjaśnić czym różni się rzutowanie dynamic_cast od static_cast?
Mam tutaj np. jedna funkcję, która używa dynamic :
(Student i Pracownik dziedziczą z klasy Osoba)
void wypiszDaneOsoby(Osoba * wskOsoba) {
Student * tempStudent = dynamic_cast<Student*> (wskOsoba);
if (tempStudent != NULL) {
cout << "Student: ";
} else {
Pracownik * tempPracownik = dynamic_cast<Pracownik*> (wskOsoba);
if (tempPracownik != NULL) {
cout << "Pracownik: ";
} else {
cout << "Blad podczas dzialania programu";
}
}
cout << wskOsoba->podajImie()
<< " "
<< wskOsoba->podajNazwisko()
<< " wydatek osobowy: "
<< wskOsoba->wydatekOsobowy()
<< "\n";
}
a tu static:
void ustalStypendiumStudenta(int nr, int stypendium) {
Student * tempStudent = static_cast<Student*> (tablicaOsob[nr]);
tempStudent->ustalStypendium(stypendium);
}
Rozumiem, że w pierwszej funkcji mogę dowiedzieć się czy dany wskaźnik wskazuje na obiekt klasy Student czy Pracownik. A do czegu użyty jest static_cast w drugiej funkcji?