2011-01-19 12 views

risposta

15

Questo non è un impegno per this ma per l'oggetto indicato da this. Quello chiamerà efficacemente operator=(QUuid const &) sull'oggetto corrente.

+0

o quello implicito (se non è definito alcun operatore di assegnazione) – smerlin

+0

@smerlin: Se l'operatore è definito esplicitamente dall'utente o implicitamente definito dal compilatore è più di un dettaglio di implementazione, è lo stesso operatore. –

+0

BTW, il codice '* this = QUuid (guid);' è equivalente al più esplicito ed ingombrante: 'this-> operator = (QUuid (guid))' ... non che questo influenzi la risposta in alcun modo. –

4

Invoca solo QUuid &operator=(const QUuid& quUid);.

1

'this' è semplicemente un puntatore all'oggetto su cui viene richiamato il metodo corrente. Cambiando il valore di "this" (dereferenziando il puntatore usando "* this" e assegnando un altro oggetto) si modifica l'oggetto del chiamante per divenire un altro.

Nel tuo esempio, un chiamante di 'operatore =' potrebbe effettuare le seguenti operazioni:

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

Secondo la definizione di 'operatore =' questa azione 'guid' copy-convertiti in un nuovo oggetto di tipo 'QUuid'.