Compartir a través de


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 .

Vea también

Referencia

este puntero