2011-01-19 10 views
7

Przeglądam właśnie źródła Qt i zauważył tęCo przypisuje do * tego (* this = val)?

QUuid &operator=(const GUID &guid) 
{ 
    *this = QUuid(guid); 
    return *this; 
} 

nigdy nie widziałem przypisanie do „tego” wcześniej. Co robi przypisanie do "tego"?

Odpowiedz

15

To nie jest przydział do this, ale do obiektu wskazanego przez this. To skutecznie wywoła operator=(QUuid const &) na bieżącym obiekcie.

+0

lub niejawny (jeśli nie zdefiniowano operatora przypisania) – smerlin

+0

@smerlin: To, czy operator jest jawnie zdefiniowany przez użytkownika lub niejawnie zdefiniowany przez kompilator, jest raczej szczegółem implementacji, to ten sam operator. –

+0

BTW, kod '* this = QUuid (guid);' jest równoważny z bardziej wyraźnym i uciążliwym: 'this-> operator = (QUuid (guid))' ... nie to wpływa w jakikolwiek sposób na odpowiedź. –

4

Po prostu wywołuje QUuid &operator=(const QUuid& quUid);.

1

'this' jest po prostu wskaźnikiem do obiektu, na którym wywoływana jest aktualna metoda. Zmiana wartości "this" (przez odwołanie do wskaźnika za pomocą "* this" i przypisanie innego obiektu) modyfikuje obiekt wywołujący, aby stał się kolejnym.

W przykładzie rozmówca z „operator =” może wykonać następujące czynności:

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

Według definicji „operator =” To działanie „guid” copy-konwertuje do nowego obiektu typu "Quuid".

Powiązane problemy