Tipo de este puntero
El tipo de puntero de this puede modificarse en la declaración de función por las palabras clave de const y de volatile .Para declarar una función como si los atributos de uno o más de estas palabras clave, agregue las palabras clave después de la lista de argumentos de función.
Considere este ejemplo:
// type_of_this_pointer1.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
El código anterior declara una función miembro, X, en las que el puntero de this se trata como un puntero de const a un objeto de const .Las combinaciones de opciones de la cv-MOD-lista pueden usar, pero modifican siempre el objeto indicada por this, no el puntero de this propio.Por consiguiente, la declaración siguiente declara la función X; el puntero de this es un puntero de const a un objeto de const :
// type_of_this_pointer2.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
La sintaxis siguiente describe el tipo de this en una función miembro, donde la cv-calificador-lista se determina de declaradores de las funciones miembro y puede ser const o volatile (o ambos), y el tipo de clase es el nombre de la clase:
tipo de clase *constthis*[de la cv-calificador-lista]*
Es decir this siempre es puntero const; no se puede reasignar.Los calificadores de const o de volatile utilizados en la declaración de función miembro se aplican a la instancia de clase designada por a this en el ámbito de esa función.
La tabla siguiente se explican más información sobre cómo funcionan estos modificadores.
semántica de este modificadores
Modificador |
Significado |
---|---|
const |
No puede cambiar los datos de miembro; no puede llamar a las funciones miembro que no son const. |
volatile |
Los datos de miembro se carga de memoria cada vez que se tiene acceso; deshabilita ciertas optimizaciones. |
Es un error para pasar un objeto de const a una función miembro que no sea const.De igual forma, es un error para pasar un objeto de volatile a una función miembro que no sea volatile.
Las funciones miembro declaradas como const no pueden cambiar los datos de miembro )en funciones, el puntero de this es un puntero a un objeto de const .
[!NOTA]
Los constructores y destructores no pueden declararse como const o volatile.Pueden, sin embargo, invocar en const u objetos de volatile .