Maison >développement back-end >C++ >Les fonctions virtuelles pures peuvent-elles avoir des implémentations en C ?
Fonctions virtuelles pures : dévoiler les possibilités de mise en œuvre
Le concept de fonctions virtuelles pures est communément associé à l'absence d'implémentation au sein de la classe de base . Cependant, il peut être surprenant que des fonctions virtuelles pures puissent effectivement avoir des implémentations.
En C , une fonction virtuelle pure est déclarée en utilisant "= 0" sans corps de fonction dans la classe de base. Cependant, la classe de base est toujours autorisée à définir une implémentation pour la fonction virtuelle pure. Cette implémentation n'est pas accessible directement par les classes externes mais peut être explicitement appelée par une classe dérivée en utilisant un nom complet.
Considérez l'extrait de code suivant :
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
Dans cet exemple, la classe A définit une fonction virtuelle pure f() mais fournit également une implémentation. La classe dérivée B peut ensuite accéder à cette implémentation de classe de base en utilisant le nom complet A::f():
class B : public A { virtual void f() { // class B doesn't have anything special to do for f() // so we'll call A's // note that A's declaration of f() would have to be public or protected to avoid a compile time problem A::f(); } };
Fournir une implémentation pour une fonction virtuelle pure permet un comportement par défaut qui peut être remplacé par classes dérivées. Elle permet également d'appeler explicitement un ensemble cohérent de fonctionnalités lorsque cela est nécessaire, même dans les cas où les classes dérivées définissent leur propre implémentation.
Cette stratégie est souvent utilisée dans des situations où un comportement par défaut raisonnable est souhaité, mais elle est essentielle pour invoquer explicitement ce comportement. De plus, cela peut être utile lorsque les classes dérivées sont censées effectuer leur propre travail mais bénéficient également d'un ensemble commun de fonctionnalités.
Il est important de noter que fournir une implémentation pour une fonction virtuelle pure n'est pas une pratique courante. pratique en C. Cependant, il s'agit d'une option valable qui peut offrir flexibilité et personnalisation dans certains scénarios.
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!