Maison > Article > développement back-end > Quel est le type du pointeur « this » dans les méthodes C constantes et non constantes ?
Type de pointeur 'this'
En C , le pointeur 'this' dans une méthode de classe fait référence à l'instance d'objet actuelle. Son type dépend si la méthode est déclarée const ou non.
Dans les méthodes non constantes :
Dans les méthodes non constantes, 'this' est de type ClassName* ceci. Cela permet une modification directe des variables membres de l'objet.
Dans les méthodes constantes :
Dans les méthodes const, 'this' est de type const ClassName* this. En effet, les méthodes const ne peuvent pas modifier l'état de l'objet.
bizarreries du compilateur et restrictions implémentées :
Certains compilateurs, tels que les anciennes versions de MSVC, peuvent implémenter ' this' comme pointeur constant, que la méthode soit const ou non. Cependant, il s'agit d'un comportement non standard qui n'est pas conforme à la spécification du langage C.
Détection de référence Rvalue :
Avec l'introduction des références rvalue en C 11, il est devenu possible de détecter ce comportement non standard. Le code qui s'appuie sur cela ne pourra pas être compilé dans des compilateurs conformes aux normes.
Implémentation MSVC :
Depuis Visual Studio 2017, MSVC utilise toujours l'implémentation non standard. de « ceci » comme un pointeur constant. Cela peut entraîner des problèmes avec le code qui utilise des références rvalue.
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!