Почему оператор = должен быть нестатическим именно членом класса?

Я правильно понимаю, что это нужно для того, чтобы никак не было возможности передать левый операнд как rvalue? И почему он еще должен быть именно нестатическим?


Ответы (1 шт):

Автор решения: AR Hovsepyan

Конструкторы и операторы присваивания генерируются компилятором, при отсутствии их пользовательских определений. Если вы напишете оператор = как не член класса, то он все равно не будет вызван, потому что генерированным компилятором оператор имеет приоритет, и тем более будет нарушено правило одного определения.Поэтому оператор= должен быть членом класса. Он не может быть статическим, поскольку имеет доступ к указателью this, который не статический, а именно, изменяется только целевой объект а не все объекты изменяются при изменении одного.

→ Ссылка