Komentar nakon citanja teme
Sve je tamo super objasnjeno, ali nije to ono sto mene zanima. Sta u stvari radi kljucna rijec virtual? Zasto na prvom mjestu moramo metode ili destruktore "gurati" u virtual?
U donjem primjeru dobivam isti rezultat stavio ili izostavio "virtual" ispred metoda u klasama Prva i Druga
Code:
class Prva
{
public:
Prva(){}
~Prva(){}
void prvaIspis()const{cout << "Ja sam u 1. osnovnoj klasi.\n";} //<--
};
class Druga
{
public:
Druga(){}
~Druga(){}
void drugaIspis()const{cout<<"JA sam u 2. osnovnoj klasi\n";}//<--
};
class Izvedena : public Prva, public Druga
{
public:
void prvaIspis()const{cout<<"Izvedena no.1\n";}//<--
void drugaIspis()const{cout<<"Izvedena no.2.\n";}//<--
};
int main()
{
Izvedena * pIzvedena=new Izvedena;
pIzvedena->prvaIspis();
pIzvedena->Prva::prvaIspis(); //ekspl. radi
pIzvedena->drugaIspis();
pIzvedena->Druga::drugaIspis();//ekspl. radi
return 0;
}
Virtual (kako sam ja shvatio) pomaze da jednim pozivom kompajler u run-time modu odredi pozivam li ja funkciju u osnovnoj ili u izvedenoj klasi. Medjutim, ako dodam rijec virtual, opet ne mogu pozvati funkciju iz osnovne klase (osim eksplicitno, naravno). Zbunjen sam...
ps. radim po knjizi C++ u 21 sat i ovaj dio sam procitao doslovce 3 puta, ali mi je i dalje nejasno, a jednostavno me strah preci preko ovoga a da ga ne shvatim. nadam se da razumijete
[Ovu poruku je menjao virtualVoid dana 28.10.2007. u 21:30 GMT+1]
...