Archives des forums MMO/MMORPG > Forums divers > La Taverne > C++ besoin d'explication
C++ besoin d'explication
Par Diacre le 12/4/2002 à 5:41:39 (#1272374)
Je n'arrive pas a voir l'interet par rapport a l'utilisation d'une simple classe de base et d'une dérivée.
Je crois que ca a son sens quand on commence a programmer des classes de base dupliquée...
Mais sans plus.
:maboule:
Et ca me rend dingueeee de pas comprendre.
Par Homer le Grand le 12/4/2002 à 8:51:20 (#1272574)
Si tu veux plus d'aide : des vrais gars qui savent tout :
Francedev
Par krisae le 12/4/2002 à 13:03:38 (#1273565)
La différence est que si tu crées une classe héritant d'une classe abstraite, tu es obligé de définir les méthodes déclarés abstraites par ta classe mère...
Un petit exemple vaut mieux qu'un grand discours..
public abstract class Vivant {
public abstract void communiquer() {
}
}
Si maintenant je veux creer une class "chien, chat, humain" qui hérite de vivant..il me faudra définir obligatoirement la méthode "communiquer"..
public class Chien extends Vivant {
public void communiquer() {
aboyer();
}
public void aboyer() {
blablablablabal
}
}
voili voilou... :)
Par Dreadskulo le 12/4/2002 à 17:47:50 (#1274951)
Moi perso je n ai que quelque methodes dans la classe qui ont besoin d etre virtuelles et je n ai besoin de mettre que "virtual" devant celle qui m interressent et pas devant la classe ( qui ne pourrait pas de toute facon vu que certaines methodes sont definies )
L interet donc comme il a deja ete dit c est surtout d avoir des methodes definies pour chaque classe derivee et qui ont le meme nom et la meme liste de parametres ( pour ceux qui allaient me sortir que suffisait de faire de l overloading )
Par Diacre le 12/4/2002 à 20:54:22 (#1276060)
je c ce qu'est une classe virtuelle , mais je pige pas son utilité.
---------------------------------------------------------------
class forme
{
...
public:
void shape ();
void trace();
};
class rectangle : public forme
{
...
};
-----------------------------------------------------------------
class forme // classe abstraite
{
public:
virtual void shape () = 0;
virtual void trace () = 0;
};
class rectangle : public forme
{
public:
void shape ();
void trace ();
};
------------------------------------------------------------------
Ces 2 exemples font la meme chose au final.
Mais QUAND faut il utiliser obligatoirement une fonction virtuel et pkoi...
c'est ca la question :)
M'enfin.
Par Dreadskulo le 12/4/2002 à 22:17:49 (#1276436)
L interet il est LA:
Class CShape{
//variables
public:
variables
//fonctions
public:
virtual void Draw();
}
Class CCircle : public CShape{
void Draw(){ blablabla }
}
Class CRect : public CShape{
void Draw(){ bliblibli }
}
Comme tu peut le voir si tu utilises Draw avec un cercle ca fera blablabla et avec Rect ca fait bliblibli
Voila pour l exemple
Donc l interet c est de definir une classe generique avec des variables des fonctions et tout le toutim qui fonctionne comme d hab et de definir des classes Heritees ou certaines fonctions ( virtuelles dans la classe Generique ) se comporteront differemment selon la classe ou tu l appelles .........et NON ce n est pas de l overloading puisque le nom et la liste de parametre de la fonction apellee sont les meme
C est clair la ou pas ?? :maboule:
Par Diacre le 12/4/2002 à 23:22:30 (#1276803)
En fait , j avais pas vu un ptit truc ds le programme.
Class windown_border : public virtual window
Et la ca change tout: Evite les erreurs d'ambiguité dans la compilation d'une classe dupliquée.
Merci de m'avoir répondu :D
JOL Archives 1.0.1
@ JOL / JeuxOnLine