Les membres statiques d'une classe occupent-ils de la mémoire si aucun objet de cette classe n'est créé?
Dire que j'ai une classe et j'ai un membre statique, mais je n'ai pas de créer des objets de ce type. La mémoire sera occupée par la variable statique? Si il serait occupé, qu'est-ce que le point de le mettre dans une classe?
source d'informationauteur Fahad Uddin
Vous devez vous connecter pour publier un commentaire.
Pas.
statique, les membres n'appartiennent pas aux instances de la classe. ils n'augmentent pas les instances et la taille de la classe, même par 1 bit!
De sortie:
Qui est, de la taille de
A
etB
est exactement le même. les membres statiques sont plus comme des objets globaux accessibles viaA::j
.Voir la démonstration à ideone : http://www.ideone.com/YeYxe
$9.4.2/1 de la Norme C++ (2003),
$9.4.2/3 et 7 de la Norme,
Comme je l'ai dit, les membres statiques sont plus comme des objets globaux!
La norme C++ ne fait pas explicitement état statique lorsque la mémoire est allouée, tant qu'il est disponible lors de la première utilisation. Cela dit, il est probablement attribué lors de l'initialisation du programme, assurant ainsi sa présence dès que c'est nécessaire, sans avoir besoin des cas, le code afin de détecter et d'effectuer la répartition de l'accès.
Le but de mettre des données statiques dans une classe est la même que de mettre toutes les autres données en classes. En mettant les données dans une structure de classe, vous définissez une encapsulation de l'espace de noms, ainsi que d'être en mesure de contrôler l'accès à l'aide de l'accesseur et mutateur méthodes, ce qui, à son tour, de vous permettre de valider les données dans la mémoire statique magasin, et pour assurer la cohérence tout au long de l'utilisation de ces données.
Les variables statiques sont stockées dans une zone de mémoire spéciale appelée SEV, alors que les instances d'une classe sont stockés dans un segment ou d'une pile. Ainsi, les membres statiques sont stockés séparément.