Heyka :)
Mam następujące pytanka dot. funkcji virtualnych w C++:
- czy jeśli mam obiekt bazowy z funkcją virtualną oraz obiekt klasy pochodnej, który "zasłania" ową funkcję to czy jeśli wywołam tą funkcję przez obiekt tj. obiket.funkcja() a nie przez wskaźnik tj. wskaznik->funkcja(); to czy wydajność mojej aplikacji się pogorszy?
- Drugie pytanie jest trochę analogiczne: jeśli mam wskaźnik do klasy pochodnej (a nie bazowej) to czy jeśli wywołam ową funkcję to czy stracę na wydajności?
- Trzecie pytanie to czy jeśli mam wskaźnik do klasy bazowej, który pokazuje na obiekt klasy bazowej (a nie pochodnej) i wywołam funkcję wirtualną to czy stracę na wydajności?
- No i ostatnie pytanie: dlaczego w javie mogą być wszystkie funkcje virtualne i nie powoduje to utraty wydajności a w C++ ma to negatywny skutek na działanie aplikacji? W jaki sposób radzi sobie z tym Java, że jest lepsza od natywnego C++? A może to C++ ma mało wydajnie to zaimplementowane?
Z góry dzięki za odpowiedzi na moje wątpliwości.
pozdrawiam