La différence entre la méthode statique et non statique de la fonction dans la mémoire
Que je comprends, chaque instance d'une classe a son propre membre des variables en mémoire, de sorte qu'il peut stocker des valeurs différentes pour les différents objets. Cependant, il n'est pas le même pour les fonctions de membres. Les fonctions de membres sont réutilisées dans les objets d'une classe, elle n'a donc qu'une seule adresse avec un bloc de mémoire à consulter si nécessaire par tous les objets.
Fonction statique est faite à l'accès des membres statiques. Cependant, la fonction statique existe aussi seulement une, pendant la durée de son application. En plus d'être à la statique de l'accesseur, à faible niveau, il n'est pas différent avec la normale des fonctions de classe, n'est-ce pas? Ou peut-être que je me trompe, que chaque classe a ses propres fonctions?
OriginalL'auteur Amumu | 2011-10-05
Vous devez vous connecter pour publier un commentaire.
Ce qui diffère de la langue, mais en C ou en C++03 fonctions généralement la carte de l'assemblée; c'est qu'ils existent à la fois dans la mémoire (si gratuit fonctions de, fonctions de classe ou de la classe des fonctions statiques) et prendre des arguments en paramètres, y compris un
this
pointeur pour les fonctions de membres qui est implicite.En C++11, lambda fonctions d'introduire une nouveauté: chaque instance de la soi-disant fonction de transporter de l'état. À partir d'une mise en œuvre point de vue, cela signifie donc qu'un "régulier" fonction doit être créé et qu'il est associé à un anonyme, un paquet de données (si nécessaire). La fonction n'a pas besoin d'être dupliqué à chaque fois que le lambda est créé, mais les données ne. Une autre figure est de se rappeler que les lambdas (en C++) remplacer la fonction des objets (ou prédicat objets): ils sont tout sucre syntaxique, la mise en œuvre est similaire.
OriginalL'auteur Matthieu M.
Non-statique fonctions acceptent paramètre supplémentaire,
this
, qui est le pointeur vers l'instance de la classe avec l'instance de variables spécifiques.Fonctions statiques n'ont pas ce paramètre (donc vous ne pouvez pas utiliser
this
dans une fonction statique et ne peuvent avoir accès aux données membres statiques).OriginalL'auteur littleadv
La seule différence entre statique et les fonctions de membres est que les fonctions de membres de toujours avoir la
this
pointeur passé en automatiquement.OriginalL'auteur Ayjay
simplement si elle est mentionnée, les fonctions statiques crée un ensemble unique de mémoire pour elle-même et sont destinées à des données statiques-les membres qui ne sont généralement pas interchangeables. Mais non statique de la fonction crée des souvenirs pour chaque cas et sont destinés à des fins non-statique et statique des données-membres. Si u besoin de sortie stables aller statique, et si u nécessitent l'alternative d'aller pour le non-statique.
OriginalL'auteur Digbijay Mohanty