Petite question c++

Résolu
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   -  
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

msg supprimé

3 réponses

Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 345
 
0
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   9
 
merci :)
0
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   9
 
mes questions seront plus précise aujourd'hui:


class A
{
public:
void afficher();
};


void A::afficher()
{
cout<<"je suis le A";
}

class B:public A
{
public:
void afficher();
};


void B::afficher()
{
cout<<"je suis le B";
}


void main()
{
A a;
a.afficher();//il va afficher je suis a

B b;
b.afficher();//il va afficher je suis le b
}
//jusqu'à maintenant je suis d'accord avec le résultat,
le a est une instance de A , le b est une instance de B donc le résultat est évident :)

mais mon problème est la:




class A
{
public:
void xxx();
void afficher();
};

void A::xxx()
{
afficher();
}


void A::afficher()
{
cout<<"je suis le A"<<endl;
}

class B :public A
{
public:
void afficher();
};


void B::afficher()
{
cout<<"je suis le B"<<endl;
}


void main()
{
A a;
a.xxx();//ici il affiche je suis le A c'est normale il est une insance de A....

B b;
b.xxx();//ici mon probléme "je suis le A"
}
le b est déclaré comme une instance de la class B , et il déclanche la metode de A ????
je sait qu'il manque le mot clé virtual dans la classe de base virtual void afficher()


mais dans le premier version elle est sans "virtual" ,et marche bien :(


j'espère que mon question est claire
0
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   9
 
j'ai passer les examen et tous va bien :)
0