une classe peut-elle avoir des membres de données virtuelles?
class Base{
public:
void counter();
....
}
class Dervied: public Base{
public:
....
}
void main()
{
Base *ptr=new Derived;
ptr->counter();
}
D'identifier que la classe de base pointeur vers la classe dérivée et à l'aide d'un dérivé de la fonction membre, nous faisons usage de "virtuel".
De même, pouvons-nous rendre les données provenant des membres "virtuel"? (le membre de données est public)
source d'informationauteur vandanak
Vous devez vous connecter pour publier un commentaire.
virtual
est un Fonction spécificateur de...De la norme docs,
Donc il n'y a rien qui s'appelle de données Virtuel membre.
Espère que ça aide...
Non, mais vous pouvez créer une fonction virtuelle pour renvoyer un pointeur vers ce que vous appelez de données virtuel membre
Non, en C++ il n'y a pas de données virtuel membres.
Je ne pense pas, mais vous pouvez le simuler à l'aide de virtual getters et setter peut-être?
Qui n'est pas correct. Nous faisons des fonctions virtuelles pour permettre aux classes dérivées pour des mises en œuvre différentes de ce que la base de donne. Il n'est pas utilisé pour identifier la classe de base pointeur vers la classe dérivée.
Seulement les fonctions membres statiques peuvent être virtuels. Les membres de données ne peut pas être.
Voici un lien avec quelques infos sur cette
Pas, parce que ce serait briser l'encapsulation dans une myriade de façons inattendues. Tout ce que vous voulez atteindre peut être fait avec des caractéristiques protégées et/ou des fonctions virtuelles.
En outre, les fonctions virtuelles sont une méthode de expédition (c'est à dire la sélection de la fonction qui va être appelée), plutôt que de sélectionner un emplacement mémoire correspondant à l'attribut de membre.
Peut-être vous pouvez voir le problème dans une méthode équivalente: