36 votes

Une classe peut-elle avoir des membres virtuels ?

class Base{  
    public:  
        void counter();   
    ....   
}

class Dervied: public Base{  
    public:  
        ....  
}

void main()  
{  
     Base *ptr=new Derived;  
     ptr->counter();  
}

Pour identifier que le pointeur de la classe de base pointe vers une classe dérivée et utilise une fonction membre dérivée, nous utilisons le terme "virtuel".

De même, peut-on rendre les membres de données dérivés "virtuels" (le membre de données est public) ?

36voto

liaK Points 6045

virtual est un Spécification de fonction ...

A partir de la documentation standard,

7.1.2 Spécification de fonction Les spécificateurs de fonction ne peuvent être utilisés que dans les déclarations de fonction. spécificateur de fonction : en ligne virtuelle explicite

Il n'y a donc rien qui s'appelle Membre virtuel .

J'espère que cela vous aidera...

16voto

mmonem Points 1747

Non, mais vous pouvez créer une fonction virtuelle qui renvoie un pointeur vers ce que vous appelez membre virtuel des données

5voto

Naveen Points 37095

Non, en C++, il n'y a pas de membres de données virtuels.

2voto

Ronny Brendel Points 2588

Je ne pense pas, mais vous pourriez le simuler en utilisant des getters et des setter virtuels, peut-être ?

2voto

Chubsdad Points 14310

Pour identifier que le pointeur de la classe de base pointe vers une classe dérivée et utilise une fonction membre dérivée, nous utilisons le terme "virtuel".

Ce n'est pas correct. Nous créons des fonctions virtuelles pour permettre aux classes dérivées de fournir une implémentation différente de celle de la base. Elles ne sont pas utilisées pour identifier que le pointeur de la classe de base pointe vers une classe dérivée.

De même, peut-on rendre les membres de données dérivés "virtuels" (le membre de données est public) ?

Seules les fonctions membres non statiques peuvent être virtuelles. Les membres de données ne peuvent pas l'être.

Voici un lien avec plus d'informations à ce sujet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X