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

Pouvez-vous appeler des méthodes membres statiques sur des instances de classe en C ?

Susan Sarandon
Libérer: 2024-11-05 20:57:02
original
142 Les gens l'ont consulté

Can You Call Static Member Methods on Class Instances in C  ?

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...
}
Copier après la connexion

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 :

  • Cohérence :Il permet un accès cohérent aux méthodes membres statiques et non statiques.
  • Prise en charge des modèles : Il permet l'écriture de code générique pouvant fonctionner avec des méthodes statiques ou non statiques.
  • Raisons historiques : À l'origine, C autorisait l'accès direct aux membres statiques via des instances, et ce comportement était préservé pour maintenir la compatibilité du code existant.

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!

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!