Maison > développement back-end > C++ > le corps du texte

Pouvez-vous surcharger les fonctions statiques et non statiques en C ?

Susan Sarandon
Libérer: 2024-10-27 11:32:02
original
471 Les gens l'ont consulté

Can You Overload Static and Non-Static Functions in C  ?

Surcharge de fonctions statiques et non statiques en C

Décider d'appeler une fonction statique ou non statique en fonction de la syntaxe d'appel peut être une fonctionnalité souhaitable. Cependant, en C , obtenir cet effet peut être difficile.

La norme C interdit explicitement la surcharge de fonctions qui diffèrent uniquement en termes de déclaration statique ou non statique. Plus précisément, toutes les fonctions membres avec des signatures identiques, y compris les variantes statiques et non statiques, ne peuvent pas être surchargées.

<code class="cpp">class Foo {
    static void print();
    void print();  // Compiler error: cannot overload with static function
};</code>
Copier après la connexion

De plus, il est possible d'appeler des fonctions statiques en utilisant la syntaxe membre de classe, ce qui introduirait une ambiguïté. s'il existe plusieurs fonctions avec la même signature.

<code class="cpp">class Foo {
    static void print();
    void print();
};

int main() {
    Foo f;
    f.print();  // Ambiguous: which print function is being called?
}</code>
Copier après la connexion

Pour déterminer la fonction spécifique à appeler, on peut envisager d'utiliser le mot-clé this. Cependant, cela pointe toujours vers l'objet pour lequel la fonction est invoquée, ce qui la rend impropre à la différenciation entre les appels statiques et non statiques.

<code class="cpp">// This keyword is always non-NULL, making it impossible to determine static vs. non-static calls.
cout << (this == nullptr ? "static" : "non-static");</code>
Copier après la connexion

En conclusion, alors que PHP fournit un moyen de distinguer entre les appels statiques et non statiques. appels de fonction non statiques, C n’a pas de mécanisme équivalent. Les fonctions statiques et non statiques doivent avoir des signatures uniques ou utiliser des mécanismes supplémentaires pour obtenir le comportement souhaité.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!