IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment sont implémentées les fonctions static en mémoire


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut Comment sont implémentées les fonctions static en mémoire
    Bonjour,

    les méthodes static d'une classe permettent d'être utilisées sans instancier une classe.
    Les attributs static eux sont commun à toutes les objets d'une même classe (ce qui permet de faire un compteur d'objet par exemple).

    Ma question est comment sont implémentées en mémoire les méthodes "normale" (dynamique ?) et static.
    C'est à dire est-ce que les méthodes "normale" sont dupliqué comme les attributs dans chaque objet où est-ce un pointeur sur la fonction avec pour différence avec les méthodes static, que le mot clef this ne pointe pas sur la classe (dans le cas d'une méthode static) mais sur l'objet ?

    Merci

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Une méthode n'est pas implémentée en mémoire. C'est du code, pas de la donnée. La place occupée par un objet en mémoire se résume en gros à la place de ses variables membres. (il doit y avoir un overhead constant et la table des fonctions virtuelles, mais je sais pas comment c'est géré dans le cas précis du C#, qui de plus avec la réflexion doit stocker tout un tas de méta-données, mais là n'est pas la question )

    Une méthode d'instance n'est jamais qu'une méthode qui prend implicitement un paramètre supplémentaire, qui est l'instance appelante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A
    {
      public int i;
      public void f { i = 10; }
    }
     
    void g(A a)
    {
      a.i = 10;
    }
    Concrètement, g et f, c'est la même chose (sauf évidemment que f étant dans la classe, elle a accès aux variables privées et protégées).

    Une méthode statique d'une classe A n'a pas de paramètre implicite de type A (puisqu'elle peut être appelée alors même qu'aucun A n'a été créé), mais a accès aux variables statiques privées / protégées de la classe A.
    ಠ_ಠ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment sont implémentées les listes Python ?
    Par rambc dans le forum Général Python
    Réponses: 8
    Dernier message: 15/12/2012, 14h17
  2. Comment sont codées les fonctions ?
    Par weezixx dans le forum Général Python
    Réponses: 2
    Dernier message: 30/11/2011, 07h53
  3. Comment sont programmés les plug-ins de jeux
    Par Marneus dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 25/11/2005, 18h01
  4. Réponses: 2
    Dernier message: 02/08/2005, 13h53
  5. Réponses: 3
    Dernier message: 08/08/2004, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo