A voir également:
- Classe abstraite
- Classe ram - Guide
- Retrouver photo de classe gratuitement - Forum Réseaux sociaux
- Bluetooth mercedes classe a 2005 - Forum Autoradio
- Retrouver la liste des élèves d'une classe - Forum Réseaux sociaux
- Impossible de trouver ou charger la classe principale @user_jvm_args.txt ✓ - Forum Réseaux sociaux
1 réponse
Une classe abstraite est une classe qui ne peut être instanciée (c'est-à-dire qu'on ne pourra pas créer d'objet de ce type).
Alors pourquoi créer une classe abstraite?
Simplement pour servir de modèle à d'autres classes, car si elle ne peut être instanciée, elle peut (et même elle doit) être dérivée.
Pour qu'une classe soit abstraite, il suffit simplement qu'elle contienne au moins une fonction virtuelle, c'est à dire une fonction déclarée mais non définie mais qui devra nécessairement être définie dans les classes filles.
Alors pourquoi créer une classe abstraite?
Simplement pour servir de modèle à d'autres classes, car si elle ne peut être instanciée, elle peut (et même elle doit) être dérivée.
Pour qu'une classe soit abstraite, il suffit simplement qu'elle contienne au moins une fonction virtuelle, c'est à dire une fonction déclarée mais non définie mais qui devra nécessairement être définie dans les classes filles.
28 déc. 2008 à 17:40
28 déc. 2008 à 17:48
est-ce-qu'il faut définir un destructeur ?
et pour le constructeur et les autres fonctions membres faut-il les définir aussi ?
28 déc. 2008 à 18:16
28 déc. 2008 à 18:24
la classe A est abstraite il ne faut pas écrire :
A* a = new B;
n'est ce pas ?
28 déc. 2008 à 18:38
Je n'ai pas précisé mais c'est la classe A qui est abstraite (je pense que tu l'avais compris).
On peut car 'new B' renvoie un pointeur sur un objet de la classe B qui elle n'est pas abstraite.
Donc on ne crée pas d'instance de la classe A; d'autre part même en écrivant 'a = objet de classe B', il ne faut pas perdre de vue que l'objet en question reste de classe B et, en aucun cas, n'est transformé en un objet de classe A. C'est la raison pour laquelle le polymorphisme jouera par exemple lors de 'delete a' (et aussi à l'appel de toute fonction virtuelle déclarée dans A).