[Polymorphisme] Opérateur polymorphique
Bonjour.
J'ai créé une classe B qui hérite d'une classe A. Or A, à déjà une fonction avec l'opérateur == (définie pour une classe A).
J'ai surchergé cet opérateur dans la classe B avec un operator==(B &).
ma question porte donc sur le renvoi de A==B(A) et B(A)==B.
concrètement:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class A {
public:
int varA;
A(arguments &args);
A(A &a);
bool operator==( const A &a)const;
}
class B : public A {
public:
int varB;
B( const int &varb, arguments & args):A(args),varB(varb){}
B( const int &varb, A & a):A(a),varB(varb){}
B(B & b);
bool operator==(const B &b)const
{
return (varB=b.varB && A::operator==(B));
}
} |
la question est: que se passe-t'il lors du code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11
| A an_A;
B an_B;
int I;//I quelquonque
bool reponse;
reponse=(an_A==A(an_A)); //renvoie true
reponse=(an_B==B(an_B)); //renvoie true
reponse=(an_A==B(an_A,I)); //renvoie ?
reponse=(B(an_A,I)==an_A); //renvoie ?
reponse=(an_B==A(an_B)); //renvoie ?
reponse=(A(an_B)==an_B); //renvoie ? |
Merci de vos réponses;)