Maison > développement back-end > C++ > Les fonctions virtuelles pures peuvent-elles avoir des implémentations en C ?

Les fonctions virtuelles pures peuvent-elles avoir des implémentations en C ?

Susan Sarandon
Libérer: 2024-12-18 12:13:15
original
873 Les gens l'ont consulté

Can Pure Virtual Functions Have Implementations in 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;
}
Copier après la connexion

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();
    }

};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal