Différence entre une fonction virtuelle et une fonction virtuelle pure

Ffonction virtuelle et fonction virtuelle pure, les deux sont des concepts du polymorphisme d’exécution. Le polymorphisme est supporté par les langages C++ et Java. En Java, le terme Redéfinition est utilisé à la place des fonctions virtuelles, car une fonction virtuelle n’est utilisé que dans la programmation C++. La principale différence entre fonction virtuelle et fonction virtuelle pure est que la fonction virtuelle a sa définition dans la classe mère et que les classes filles qui l’héritent la redéfinissent. Une fonction virtuelle pure n’a pas de définition dans la classe mère et toutes les classes filles doivent la redéfinir.
QCM-C

Définition de fonction virtuelle

Une fonction virtuelle est une fonction membre de la classe mère et elle est redéfinie par les classes filles qui héritent de la classe mère. Il n’est pas nécessaire que toutes les classes filles doivent redéfinir la fonction virtuelle, elle n’est redéfinie que par les classes filles qui peuvent nécessiter son fonctionnement. Une fonction virtuelle est créée en déclarant la fonction dans la classe mère précédée du mot-clé virtual.

Exemple:

class Test{
    virtual int start();
};

 

Définition de fonction virtuelle pure

Une fonction virtuelle pure fournit les mêmes fonctionnalités qu’une fonction virtuelle. En dehors de cela, une fonction virtuelle pure fait de la classe une classe abstraite. Cela signifie que si une classe possède une fonction virtuelle pure, la classe ne peut pas être instanciée. Seules les références ou les pointeurs peuvent être créés de cette classe.

Une fonction virtuelle pure dans une classe mère oblige les classes filles de définir la fonction virtuelle pure. Sinon, la classe fille sera également une classe abstraite.

Exemple:

class Test {
    virtual int start() = 0;
};
Différence entre la surcharge de fonctions et la redéfinition de fonctions en C ++

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *