¿Se thisgarantiza que el valor del puntero sea constante durante la vida útil de un objeto en particular?
Sí .
Como dice el usuario Aconcagua : el valor del thispuntero siempre es el valor de la dirección del objeto en el que se llamó a la función el 1 . Entonces la pregunta es equivalente a:
¿Puede un objeto cambiar su dirección de memoria a lo largo de la vida?
Esto no es posible, por definición de lifetime2 . La vida útil de un objeto comienza cuando o después de que se obtiene su almacenamiento y termina antes de cuando se libera.
1) [class.this]/1
En el cuerpo de una [class.mfct]función miembro no estática ( ), la palabra clave thises un valor prva cuyo valor es un puntero al objeto para el que se llama la función.
2) [basic.life]/1 (énfasis mío)
La vida útil de un objeto o referencia es una propiedad de tiempo de ejecución del objeto o referencia. Se dice que una variable tiene una inicialización vacía si se inicializa por defecto y, si es de tipo de clase o una matriz (posiblemente multidimensional) de la misma, ese tipo de clase tiene un constructor trivial predeterminado.
La vida útil de un objeto de tipo Tcomienza cuando :
- se obtiene almacenamiento con la alineación y el tamaño adecuados para el tipo
T , y
- su inicialización (si la hay) está completa (incluida la inicialización vacía) (
[dcl.init]), excepto que si el objeto es un miembro de la unión o subobjeto del mismo, su vida útil solo comienza si ese miembro de la unión es el miembro inicializado en la unión ( [dcl.init.aggr], [class.base.init]), o como se describe en [class.union].
La vida útil de un objeto ode tipo Tfinaliza cuando :
- si
Tes un tipo que no es de clase, el objeto se destruye o
- si
Tes un tipo de clase, comienza la llamada al destructor, o
- el almacenamiento que ocupa el objeto se libera o lo reutiliza un objeto que no está anidado dentro de
o( [intro.object]).
thispuntero siempre es el valor de la dirección del objeto sobre el que se invocó la función. Entonces, la pregunta es equivalente a '¿puede un objeto cambiar su dirección de memoria a lo largo de la vida?'