Appel de méthodes membres statiques sur des instances de classe
En C , les méthodes membres statiques peuvent être appelées directement ou via une instance de classe. Ce comportement peut soulever des questions concernant les attentes de la norme concernant l'utilisation des méthodes membres statiques.
La norme C indique explicitement que les méthodes membres statiques peuvent être appelées sans instance. Cependant, cela n'exclut pas la possibilité de les appeler via une instance.
Considérons l'exemple de code suivant :
class Test { public: static void DoCrash() { std::cout << "TEST IT!" << std::endl; } }; int main() { Test k; k.DoCrash(); // calling a static method like a member method... }
Dans cet exemple, la méthode statique DoCrash() est invoquée sur un instance de la classe Test (k). Étonnamment, ce code se compile et s'exécute sans erreur, affichant "TEST IT!".
Pourquoi est-ce autorisé ?
La norme permet d'appeler des méthodes membres statiques via des instances pour plusieurs raisons :
Points supplémentaires
Bien que l'appel de méthodes membres statiques via des instances soit autorisé, il est généralement déconseillé. En effet, cela peut entraîner une confusion et un comportement inattendu, notamment lorsque le code est mis à jour ou modifié. Pour plus de clarté et d'exactitude, il est préférable d'appeler les méthodes membres statiques directement en utilisant le nom de la classe, comme dans Test::DoCrash().
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!