¿Se this
garantiza 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 this
puntero 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 lifetime
2 . 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 this
es 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 T
comienza 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 o
de tipo T
finaliza cuando :
- si
T
es un tipo que no es de clase, el objeto se destruye o
- si
T
es 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]
).
this
puntero 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?'