Surcharge de fonctions statiques avec des fonctions non statiques en C
Contexte :
Surcharge de fonctions avec différents types de retour n'est pas pris en charge en C , et il en va de même lorsque vous tentez de surcharger une fonction statique avec une fonction non statique. Ce scénario a été illustré dans la définition de classe fournie, mais il a généré une erreur.
Interdiction standard :
Ce comportement est explicitement interdit par la norme C (ISO 14882 : 2003, Section 13.1/2) :
Considérations relatives à l'ambiguïté :
Même si la surcharge était autorisée, elle introduirait une ambiguïté car :
Par exemple :
<code class="cpp">class Foo { public: static void print() { cout << "static" << endl; } }; Foo f; f.print(); // Ambiguous: static or non-static call?</code>
Approche alternative :
Étant donné qu'il n'est pas possible de déterminer si une fonction est appelée de manière statique ou non en C , des méthodes alternatives peuvent être utilisées pour obtenir la fonctionnalité souhaité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!