" Mais l´intéret réside il uniquement dans le liage dynamique ? "
bah ca permet aussi d´éviter de répéter 36 fois les mêmes trucs et ne définir que les éléments spécifiques dans une classe fille tout en appelant la méthode " par défaut" de la classe mère.
ex :
class A
{
public :
virtual void blabla()
{
cout < < " Les classes filles pourront si elles en ont besoin réutiliser cette fonction dans leur propre redéfinition et comme elles n´ont pas envie de tout se retaper alors on ne l´écrit qu´une seule fois \n\n\n";
}
};
class B : public A
{
public :
void blabla()
{
A::blabla();
cout < < " On rajoute des comportements propre à la classe B \n\n\n";
}
};
class C : public A
{
public :
void blabla()
{
A::blabla();
cout < < " On rajoute des comportements propre à la classe C \n\n\n";
}
};
class D : public A
{
public :
void blabla()
{
cout < < " Ici on utilise une simple redéfinition dans la classe D \n\n\n";
}
};
void main()
{
A exA, *pA;
B exB;
C exC;
D exD;
exA.blabla();
exB.blabla();
exC.blabla();
exD.blabla();
pA = & pA->blabla();
pA = & pA->blabla();
pA = & pA->blabla();
}
" Et les classes abstraites, on s´en sert beaucoup ? "
Tout dépend comment tu concois tes programmes . .. Je dirai que tu peux t´en passer mais si tu souhaites vraiment faire de la conception objet " propre", ca peut s´avérer nécessaire voire indispensable. 