(C++)Que signifie virtual ici
Fermé
javast
Messages postés
75
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
14 février 2013
-
7 févr. 2012 à 22:04
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 13 févr. 2012 à 02:06
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 13 févr. 2012 à 02:06
A voir également:
- (C++)Que signifie virtual ici
- Virtual dj gratuit - Télécharger - DJ & Karaoké
- Virtual pc - Télécharger - Émulation & Virtualisation
- Virtual dub - Télécharger - Montage & Édition
- Virtual cable - Télécharger - Audio & Musique
- Que signifie restreindre sur instagram - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
8 févr. 2012 à 00:19
8 févr. 2012 à 00:19
Bonjour,
Le virtual dans ce cas permet de faire de l'héritage virtuel. Cela évitera de dédoubler les membres de cette structure lors d'un futur héritage. On parlera d'héritage en diamant.
Le virtual dans ce cas permet de faire de l'héritage virtuel. Cela évitera de dédoubler les membres de cette structure lors d'un futur héritage. On parlera d'héritage en diamant.
javast
Messages postés
75
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
14 février 2013
1
8 févr. 2012 à 17:08
8 févr. 2012 à 17:08
Merci beaucoup à vous deux :)
8 févr. 2012 à 08:54
Par contre, je n'ai pas compris ton explication fiddy. Pourrais tu nous donner un petit exemple STP ?
8 févr. 2012 à 11:09
struct B { int i;};
struct A : public B;
struct C : public B;
Puis : struct Union : public A, public C;
Cela ne devrait pas passer la compilation puisque cela dupliquera la variable i de la structure B. Dis autrement : Union.i; le compilateur ne sera pas s'il doit hériter de A ou de C.
Tandis qu'en mettant : struct A : public virtual B; et struct C : public virtual B; cela ne créera pas le doublon. Et la compilation passera.
J'espère avoir été plus clair (et surtout de pas avoir dit de bêtises ^^).
8 févr. 2012 à 14:22
12 févr. 2012 à 22:07
J'ai une deuxième question si ça dérange pas.
Est ce que B ici, est considéré comme une classe ou bien une struct?et pourquoi?
Merci
Modifié par Pacorabanix le 13/02/2012 à 02:06
le but est de garder une compatibilité avec un code type "C" (où les struct existent mais sont simplement des "enregistrements" de variables) avec l'orienté objet du C++.