Jakie sa roznice pomiedzy tymi dwoma metodami, zwykla a wirtualna?
ban na google?
http://pl.wikipedia.org/wiki/Metoda_wirtualna
Funkcje wirtualne
#include <iostream>
using namespace std;
class Example {
public:
void foo() { cout << "zwykla metoda\n"; }
virtual void vFoo() { cout << "metoda wirtualna klasa Example\n"; }
};
class Example2 : public Example {
public:
void foo() { cout << "zwykla metoda2\n"; }
void vFoo() { cout << "metoda wirtualna klasa Example2\n"; }
};
int main()
{
Example *p = new Example;
p->foo();
p->vFoo();
delete p;
p = new Example2;
p->foo();
p->vFoo();
delete p;
cin.sync();
cin.get();
return 0;
}
Skompiluj i znajdź jeden szczegół.
Jak dalej nie widzisz różnicy to dodaj słówko virtual do foo w Example, albo usuń z vFoo() z Example... pobaw się tym, a na pewno zobaczysz różnicę.
O to chodzi Virtual ?
EDIT: sorry, nie odświeżyłem podstrony, a są już odp.
Czyli w tych wirtualnych chodzi o to ze zamiast tworzyc dodatkowe metody w klasach pochodnych,tylko nadpisuje te wirtualna z bazowej i w klasie pochodnej pisze jej kod w zaleznosci od tego co chce zeby ona mi tu teraz robila?Dobrze mowie?
@New Chyba tu bardziej chodzi o polimorfie
no a polimorfizm to miedzy innymi metody wirtualne:
Polimorfizm to możliwość zdefiniowania w klasach pochodnych metod i o takich samych nazwach, co w klasie bazowej, lecz wykonujących różne czynności
tak wiec mam racje chyba :)