Citat:
fili:
1.) Kada imamo na primer dve polimorfne funkcije od kojih jedna kao parametar prima int a druga pointer na neki nas objekat, ili obe primaju pointere na razlicite objekte, npr:
void Bu(int nParametar);
void Bu(Pravac * pPravac);
void Bu(Neshto * pNeshto);
kako onda pozivamo zeljenu funkciju ako zelimo da joj prosledimo NULL pointer? :)
Koja ce biti pozvana od ove tri, ako pravilo postoji?
Na 2. i 3. pitanje dragi tata je lepo i detaljno odgovorio. A ja cu da ti odgovorim na prvo. Kao sto je dragi tata rekao, u pitanju su "preklopljene" funkcije, e sada sa Bu(NULL) bi dobio gresku. jer C++ kompajler ne zna da konvertuje NULL u nesto ali ako bi napisao nesto tipa
Bu( (Pravac*) NULL); E tada je vec druga prica, jer tada C++ kompajler explicitno pravi konverziju i poziva drugu funkciju. Mozes da napravis operatore za inmplicitnu koncerziju klase NestoSasvimTrece u klasu Pravac i tada pokazivac na NestoSasvimTrece *A mozes slobodno da pozoves
Bu(A); i kompajler nece prijaviti gresku, ali ako to NestoSasvimTrece postoji i definiasna imlicitna konvezija u klasu Nesto e tada ce biti prijavljena greska jer opet kompajler ne zna koju konverziju da primeni. Opet da na pomenem da kompajler ako ima konverziju iz tipa A u tip B, i iz tipa B u tip C, i imas f-ju koja poziva func(C arg); sa
pozivom funkcije func(pA) ces dobiti gresku jer ne mogu lancano implicitne konverzije da se prave.
a ono pitanje pod 2, recimo sto se nebi zaigrao i napravaio klase koje u destruktoru kazu ko su sta su i odakle su, i onda kreiras objekte tih klasa i igras se i testiras kako koji "umire" :)