Что делает присвоение * this (* this = val)? - PullRequest
7 голосов
/ 19 января 2011

Я просматривал источники Qt и заметил это

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

Я никогда раньше не видел назначения для "этого".Что делает присвоение «этому»?

Ответы [ 3 ]

15 голосов
/ 19 января 2011

Это не присвоение this, а объекту, указанному this.Это эффективно вызовет operator=( QUuid const & ) для текущего объекта.

4 голосов
/ 19 января 2011

Это просто вызывает QUuid &operator=(const QUuid& quUid);.

1 голос
/ 19 января 2011

'this' - это просто указатель на объект, для которого вызывается текущий метод.Изменение значения после 'this' (разыменование указателя с помощью '* this' и присвоение другого объекта) изменяет объект вызывающей стороны, чтобы он стал другим.

В вашем примере, вызывающая функция 'operator =' может сделатьследующее:

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

В соответствии с определением «operator =» это действие копирует «guid» в новый объект типа «QUuid».

...