¿Se this
garantiza que el valor del puntero sea constante durante la vida útil de un objeto en particular? No puedo imaginar un caso en el que cambiaría, pero no sé si no me estoy perdiendo algo.
c++
this
language-lawyer
object-lifetime
Daniel Langr
fuente
fuente
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?'std::move
cambiaría losthis
indicadores. Formalmente diríamos que son dos objetos diferentes, pero informalmente uno puede pensar en ellos como "lo mismo", lo que podría generar confusión si uno no está prestando atención.Respuestas:
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: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
2)
[basic.life]/1
(énfasis mío)fuente
this
cada vez, independientemente de los movimientos en el montón?Un objeto tiene una región de almacenamiento.
this
señala allí.fuente
Se
this
garantiza que el valor de será constante si el programa lo lee alguna vez, si posteriormente algunos bits del valor de lectura son imposibles de recolectar basura o si posteriormente algunos bits del valor de lectura escaparon fuera del programa. En todos los demás casos, se comporta como un gato de Schrödinger, es decir, es constante y variable al mismo tiempo.fuente
this