Funzioni virtuali pure

di il
2 risposte

Funzioni virtuali pure

Ragazzi vorrei utilizzare nel mio programma una funzione virtuale pura. Ho creato le varie versioni della funzione per ciascuna classe derivata, e ho reso astratta la classe base.
a questo punto mi chiedo, devo obbligatoriamente creare un array di puntatori ad oggetti per far sì che, a seconda dell'oggetto puntato, venga richiamata una determinata versione della funzione virtuale?
Così insomma:

Base *oggetti[2];
oggetti[0]=&Derivata1(........);  
oggetti[1]=&Derivata2(........);

for(int i=0;i<2;i++)
oggetti[i]->funzionevirtuale();

Perchè io invece ho fatto in questo modo:

int main()
{ 
    Base *b;
    Derivata1  obj1;
    Derivata2 obj2;
    b=&ob1;
    b->funzionevirtuale();
    b=&ob2;
    b-> funzionevirtuale();
return 0;
}

E' corretto ugualmente? Scusate le domande demenziali ma a una certa ora mi vengono i dubbi

2 Risposte

  • Re: Funzioni virtuali pure

    Ambedue i modi sono corretti, ma quello che conta è quel Base* che hai usato. In altre parole il polimorfismo funziona solo se a un puntatore di classe base viene assegnato un puntatore di classe derivata (vale anche per i reference, ma qui il discorso si complica un po').
    Che poi tali puntatori siano in un array, un singolo puntatore o meccanismi più sofisticati (tipo smart pointer) non importa.
  • Re: Funzioni virtuali pure

    Perfetto, menomale Grazie della risposta
Devi accedere o registrarti per scrivere nel forum
2 risposte