Maison  >  Article  >  développement back-end  >  Quel est le type du pointeur « this » dans les méthodes C constantes et non constantes ?

Quel est le type du pointeur « this » dans les méthodes C constantes et non constantes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-09 21:21:02213parcourir

What is the Type of the 'this' Pointer in C   Constant and Non-Constant Methods?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn