Fonctions virtuelles pures et classes abstraites
Une fonction virtuelle pure est une fonction virtuelle sans corps de fonction. Que signifie avoir un corps sans fonction ? C'est la fonction définie comme ceci :
nom de la fonction de valeur de retour virtuelle (paramètre formel) = 0 ;
Comme vous pouvez le voir, la définition de virtuel et de fonction virtuelle est la même avant, avec un =0 ajouté à la fin. Indique qu'il n'y a pas de corps de fonction, c'est une fonction virtuelle pure . Une classe qui contient des fonctions virtuelles pures est une classe abstraite . Une classe abstraite a au moins une fonction virtuelle pure.
L'existence de classes abstraites vise à fournir une interface hautement abstraite et unifiée avec le monde extérieur, puis à utiliser leurs différentes méthodes via des fonctionnalités polymorphes. C'est l'une des idées fondamentales de la conception orientée objet et du génie logiciel C++.
Les caractéristiques des classes abstraites sont résumées comme suit :
1. Une classe abstraite ne peut pas instancier un objet. Elle ne peut être utilisée que comme classe de base pour permettre aux classes dérivées de compléter les fonctions virtuelles pures qu'il contient, puis de l'instancier et de l'utiliser.
2. La classe abstraite dérivée peut encore compléter de manière incomplète les fonctions virtuelles pures de la classe de base et continuer à être dérivée en tant que classe abstraite. Jusqu'à ce que la définition de toutes les fonctions virtuelles pures soit donnée, elle devient une classe concrète et l'objet ne peut pas être instancié.
3. Étant donné que les classes abstraites sont abstraites et ne peuvent pas être incorporées, elles ne peuvent pas être utilisées comme types de paramètres, valeurs de retour ou types de conversion.
4. En continuant avec le troisième élément, les classes abstraites peuvent définir un type pointeur ou référence pointant vers sa classe dérivée pour obtenir des fonctionnalités polymorphes.