Rechercher : dans
Par :

[C++] héritage

Dernière réponse le 30 jun 2003 à 16:53:35 Aurélien, le 30 jun 2003 à 12:01:28 
 Signaler ce message aux modérateurs

Salut !
G une petite question concernant l'héritage en C++.
Imaginons une classe Figure, et deux autres classes rectangle et cercle héritant de figure.
Si je crée un vecteur/tableau de figures, est-ce que je pourrais y insérer des rectangles et cercles, qui, même si ils ne sont pas du même type, en héritent quand même.
Merci A+

Meilleures réponses pour « [C++] héritage » dans :
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Héritage et polymorphisme VoirHéritage et polymorphisme La notion d’héritagexe "héritage" est très facile à comprendre. En C++, on dit qu’une classe définie à partir d’une classe existante et à laquelle on ajoute une fonctionnalité dérive de la classe initiale. Cette dernière...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

choubaka, le 30 jun 2003 à 12:08:00

Salut

c'est le principe même de l'héritage, cercle et rectangle sont des Figures mais spécialisées

Chouba
Casque Bleu forumique

Répondre à choubaka

2

Aurélien, le 30 jun 2003 à 12:09:15

Donc rectangle et cercle peuvent bien être stockés dans un talbeau de figure ?

Répondre à Aurélien

3

choubaka, le 30 jun 2003 à 13:39:50

Oui, à condition de savoir de quel type de figure tu as affaire lorsque tu dois l'extraire de ta structure de données

Chouba
Casque Bleu forumique

Répondre à choubaka

4

Aurélien, le 30 jun 2003 à 13:45:41

Et il y a moyen de savoir quel est le type de la figure avant de l'extraire? (a priori non étant donnée ta réponse..)
Merci
Auré

Répondre à Aurélien

5

choubaka, le 30 jun 2003 à 14:55:23

Je ne connais pas tous les objets et leurs méthodes héritées en C++, mais par exemple en java, il existe une méthode "instanceOf() qui permet celà, peut être qu'en C++, il existe l'équivalent...

Chouba
Casque Bleu forumique

Répondre à choubaka

6

olivier.s, le 30 jun 2003 à 15:54:39

Salut,

Ca fait un petit moment que j'ai pas touché au C++, dc je pense mais je suis pas sur que tu n'as pas de chose similaire a instanceof de Java. La si je dis une connerie, arretez moi.

Par contre tu peux peut etre declarer une methode virtuelle pure ds ta classe mere et la redefinir ds tes clases fille pour qu'elle te done le nom de la classe. Et t'apelles direct ta methode depuis l'element du vecteur : monVecteur[i].quelleClasse() si c'est possible. Quelque chose comme ca quoi. J'espere avoir ete clair et que ca d'aidera.
A ce niveau de mon explic je te cache pas que ce que je te raconte me rappelle fortement les listes (ou autres piles..) pseudo-generique en C. Mais bon...

Par contre tu parles de vecteurs, si t'utilises la STL n'inseres pas directement tes objets dedans mais des pointeurs (ca evite les appels aux constructeurs de copie de tes objets et tout le bazar s'en suivant pour des clopinettes). Va voir la doc de la STL.

Répondre à olivier.s

7

 marvinrouge, le 30 jun 2003 à 16:53:35

Travaille avec unn tabelau de pointeurs

int nbFigures = 1000;

Figure** tab = new Figure*[nbFigures];

for (int i=0; i<nbFigures; i++)
if (i%2==0)
tab[i] = new Cercle(i); // cercle de rayon i
else
tab[i] = new Rectange(2*i, i); rectange de cotés 2*i et i

for int i=0; i<tab[i]; i++)
cout << "aire de la figure = " << tab[i]->calculeAire() << endl;

avec calculeAire() vurtuelle pure dans la classe figure

et calculeAire() retourne pi * rayon * rayon dans cercle
et calculeAire() retourne longuer * largeur dans cercle

ok ?

Répondre à marvinrouge