2011-01-19 13 views

Respuesta

15

Eso no es una asignación para this sino para el objeto apuntado por this. Eso llamará efectivamente al operator=(QUuid const &) en el objeto actual.

+0

o implícito (si no se ha definido ningún operador de asignación) – smerlin

+0

@smerlin: Si el operador está definido explícitamente por el usuario o implícitamente definido por el compilador es más un detalle de implementación, es el mismo operador. –

+0

Por cierto, el código '* this = QUuid (guid);' es equivalente a lo más explícito y engorroso: 'this-> operator = (QUuid (guid))' ... no que esto afecte la respuesta de ninguna manera. –

4

Simplemente invoca QUuid &operator=(const QUuid& quUid);.

1

'this' es simplemente un puntero al objeto sobre el que se invoca el método actual. Cambiar el valor detrás de 'esto' (desmarcando el puntero usando '* this' y asignando otro objeto) modifica el objeto de la persona que llama para convertirse en otro.

En su ejemplo, una persona que llama de 'operador =' podría hacer lo siguiente:

GUID guid = guid(...) ; 
QUuid uid = guid ; 

De acuerdo con la definición de 'operador =' esta acción 'GUID' copia-convertidos en un nuevo objeto de tipo 'QUuid'.

Cuestiones relacionadas