Type de ce pointeur
le type du pointeur de cela peut être modifié dans la déclaration de fonction par les mots clés de const et d' volatile .Pour déclarer une fonction en tant qu'avec les attributs d'un ou plusieurs de ces mots clés, ajoutez les mots clé après la liste d'arguments de fonction.
Considérez cet exemple :
// type_of_this_pointer1.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
Le code précédent déclare une fonction membre, X, dans lequel le pointeur de cela est traité comme un pointeur de const à un objet de const .Les combinaisons des options de cv-MOD-liste peuvent être utilisées, mais elles modifient toujours l'objet sur lequel pointe cela, pas le pointeur de cela lui-même.par conséquent, la déclaration suivante déclare la fonction X; le pointeur de cela est un pointeur de const à un objet de const :
// type_of_this_pointer2.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
Le type de cela dans une fonction membre est décrit par la syntaxe suivante, où la cv-qualificateur-liste est déterminée du déclarateurs de fonctions membres et peut être const ou volatile (ou les deux), et le classe-type est le nom de la classe :
[classe-type *constcela de cv-qualificateur-liste]
en d'autres termes, cela est toujours un pointeur const ; il ne peut pas être réassigné.Les qualificateurs de const ou d' volatile utilisés dans la déclaration de fonction membre s'appliquent à l'instance de la classe désignée par cela dans la portée de cette fonction.
Le tableau suivant explique plus sur la façon dont ces modificateurs fonctionnent.
sémantique de ce modificateurs
Modificateur |
Signification |
---|---|
const |
Impossible de modifier les données membres ; ne peut pas appeler les fonctions membres qui ne sont pas const. |
volatile |
Les membres de données sont chargées à partir de la mémoire chaque fois qu'elles sont accessibles ; désactive certaines optimisations. |
Il s'agit d'une erreur pour passer un objet de const à une fonction membre qui n'est pas const.De même, il s'agit d'une erreur pour passer un objet d' volatile à une fonction membre qui n'est pas volatile.
Les fonctions membres déclarées comme const ne peuvent pas modifier les données membres (dans de telles fonctions, le pointeur de cela est un pointeur vers un objet de const .
[!REMARQUE]
Les constructeurs et les destructeurs ne peuvent pas être déclarés comme const ou volatile.Elles peuvent, toutefois, être appelées sur const ou des objets d' volatile .