View Single Post
Old 06-01-2007, 02:05   #1
jewelz
Member
 
Iscritto dal: Sep 2005
Messaggi: 120
C++ - Non mi è chiara una cosa sulle funzioni virtuali

perchè questo codice
Codice:
#include <iostream> 
using namespace std; 
 
class B { 
protected:    int b; 
public: 
    void f1() {cout << 'B' << endl;} 
} ; 
 
class D: public B { 
public: 
   virtual void f1(){ cout << 'D' << endl;} 
  
};

int main(){ 
    D* pd = new D; 
    pd->f1(); 
    system("PAUSE");
    return 0; 
 
}
mi dà D in uscita??? cioè se nella classe base ho una funzione non virtuale e nella derivata ho una ridefinizione della stessa però come virtuale, dato un puntatore del tipo della classe derivata, viene scelta quest'ultima dal compilatore? se sì, perchè???? scusate ma è da 2 mesi che imparo il c e sta cosa proprio non mi è chiara... quasi dimenticavo: grazie a chi sarà così gentile da rispondermi...
jewelz è offline   Rispondi citando il messaggio o parte di esso