Maison > développement back-end > C++ > Les membres C peuvent-ils être à la fois statiques et virtuels ?

Les membres C peuvent-ils être à la fois statiques et virtuels ?

DDD
Libérer: 2024-10-30 19:09:30
original
555 Les gens l'ont consulté

Can C   Members Be Both Static and Virtual?

Les membres C peuvent-ils être à la fois statiques et virtuels ?

En C, les membres ne peuvent pas être déclarés à la fois statiques et virtuels. Compiler une déclaration comme static virtual member(); entraînera une erreur.

Cependant, vous pouvez obtenir un effet similaire en utilisant les méthodes suivantes :

  • Fonctions séparées : Définissez une fonction statique et une fonction non -fonction virtuelle statique du même nom. La fonction non virtuelle peut être appelée directement sur la classe ou remplacée dans les classes dérivées, tandis que la fonction statique donne accès à l'implémentation de la classe de base.
  • Fonctions surchargées : Déclarez les fonctions surchargées avec le même nom (un virtuel statique et un virtuel non statique). Le compilateur sélectionnera la fonction appropriée en fonction du contexte d'appel.

Voici un exemple :

<code class="cpp">struct Object
{
    static const TypeInformation& GetTypeInformation();
    virtual const TypeInformation& GetTypeInformation() const;
};

struct SomeObject : public Object
{
    static const TypeInformation& GetTypeInformation();
    virtual const TypeInformation& GetTypeInformation() const override;
};</code>
Copier après la connexion

Cela vous permet d'appeler GetTypeInformation() à la fois sur des objets (object-> ;GetTypeInformation()) et sur les classes (SomeObject::GetTypeInformation()). Object::GetTypeInformation() renverra l'implémentation de la classe de base, tandis que SomeObject::GetTypeInformation() appellera la version remplacée.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal