salut, Alors ma question est claire : deux objets d'une même classe peuvent elles avoir des méthodes différentes ?
salut, Alors ma question est claire : deux objets d'une même classe peuvent elles avoir des méthodes différentes ?
kamoulox ?
Un objet c'est une instance d'une classe.
Une classe, ça a des méthodes et variables membres clairement définies. A la compilation.
Donc par quelle magie espères-tu parvenir à ce que tu dis ? Ou bien tu as une toute autre idée en tête et t'exprimes mal.
Sinon, tu peux avoir un pointeur de méthode en attribut, mais je doute que ce soit ce dont tu parles.
c'était une question posée dans un Devoir surveillé sur 2.5 points! et c'est pour cela que je l'ai trouvée bizzar
Puisque la question est "bizarre", alors je vais répondre par une réponse "bizarre" oui c'est possible.
... Du moins sur le papier après à tester en vrai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Weird { #ifdef CLASS_PART_1 // ... Stuff here #endif // CLASS_PART_1 #ifdef CLASS_PART_2 // ... Stuff here #endif // CLASS_PART_2 };
Et ensuite dans le code, on l'utilise comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #define CLASS_PART_1 1 Weird weird_object; #undef CLASS_PART_1
MAIS pour que cela fonctionne, je pense qu'il faut définir seulement un seul morceau dans une unité de compilation (fichier cpp + tous les include).
Et encore, techniquement, tu auras deux classes de même nom, en conflit potentiel.
Une réponse potentiellement valable serait la suivante:
une référence ou un pointeur peut désigner des objets polymorphiques.
Ces objets peuvent avoir des fonctions distinctes (si elles sont virtuelles), mais ne sont en fait pas du même type réel.
Si un objet est d'un type donné, il a les fonctions de ce type. Le manipuler via une référence d'un de ses types parents ne change rien à cela.
Pour faire court, non doit suffire à ouvrir un débat lors de la correction.
Le type de la variable n'est pas toujours strictement le type de l'objet.
Le type de l'expression variable est référence sur A, le type de la valeur de cette expression est B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 B truc; A& variable = truc; //qui n'est valable que si B hérite publiquement de A, directement ou non variable.une_fonction();
La conséquence, c'est que tu ne peux appeler une_fonction() que si elle est définie dans A, mais si elle est virtuelle, c'est celle définie dans B qui sera appelée.
En faite non, ca ne peut jamais marcher, c'est un UB. L'ODR autorise à définir plusieurs fois un même symbole dans le programme (mais toujours une seule fois pas unité de compilation) mais il impose aussi que ces définitions soient strictement identiques : même suites de symboles et même signification de chaque symbole (la règle est plus détaillé que ça, mais l'idée est là).
@OP: La réponse est non, deux objets du même type supportent les mêmes appels.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager