6 votes

Méthode Const accédant aux variables statiques

Je m'excuse si cette question a déjà été posée. Les résultats de ma recherche n'ont pas permis de trouver une question similaire.

Il s'agit d'une question conceptuelle. Selon MSDN et d'autres aussi :

Une fonction membre constante ne peut pas modifier les données membres ou appeler les fonctions membres qui ne sont pas constantes.

Pourquoi alors sommes-nous autorisés à accéder aux variables membres statiques à partir d'une méthode const ?

13voto

Crazy Eddie Points 23778

Parce qu'ils ne font pas partie de l'objet.

10voto

Michael Burr Points 181287

La norme C++ dit ceci const les fonctions des membres :

Si la fonction membre est déclarée const le type de ceci est const X* , [...]

Dans un const l'objet pour lequel la fonction est appelée est accessible par le biais de la fonction const d'accès ; par conséquent, un const ne doit pas modifier l'objet et ses membres non statiques.

Vous voyez donc que seuls les membres de données non statiques font partie de la "constance" de la fonction membre.

Cependant, je pense que, plus important encore, cela indique qu'une bonne façon de comprendre ce qui se passe avec const des fonctions membres est qu'elle rend les fonctions implicites this pointeur un pointeur vers const .

Puisque les membres statiques n'ont pas besoin d'être accédés par l'intermédiaire de la fonction this (implicitement ou explicitement), l'accès à ceux-ci n'est pas possible. const qualifié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X