Bien que les fonctions virtuelles pures soient généralement considérées comme manquant d'implémentations, certains scénarios permettent leur définition au sein de la classe de base.
Dans l'extrait de code que vous avez fourni :
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
La fonction A::f() est déclarée comme pur virtuel avec une implémentation. Ceci est permis par le langage C, même si cela soulève des questions quant à son objectif.
Les fonctions virtuelles pures avec implémentations servent un objectif spécifique. En fournissant une implémentation par défaut dans la classe de base, les classes dérivées peuvent :
Voici un exemple :
class B : public A { virtual void f() { A::f(); // Calls the base class implementation } };
L'utilisation de fonctions virtuelles pures avec des implémentations est rare mais peut être bénéfique dans des scénarios où :
Bien que fournir des implémentations de fonctions virtuelles pures dans la classe de base soit autorisé par le langage C, ce n'est pas une pratique courante. Comprendre le but et les implications de cette technique vous permet de l'utiliser le cas échéant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!