En C , il n'est pas possible de définir directement des fonctions membres qui sont à la fois statiques et virtuelles. Le compilateur émettra une erreur lors de la tentative de déclaration d'un "membre virtuel statique ()". Cependant, il existe des techniques pour obtenir une fonctionnalité équivalente.
Pour émuler le comportement d'une fonction membre virtuelle statique, envisagez l'approche suivante :
<code class="cpp">struct Object { struct TypeInformation; static const TypeInformation &GetTypeInformation() { return GetTypeInformationImpl(); } protected: virtual const TypeInformation &GetTypeInformationImpl() const = 0; };</code>
Ici, la fonction GetTypeInformation() est définie comme statique et renvoie une référence constante au type TypeInformation. Cependant, l'implémentation réelle de cette fonction est déléguée à la classe dérivée via la fonction virtuelle protégée GetTypeInformationImpl().
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!