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

Рейтинг: 0Ответов: 1Опубликовано: 09.04.2023

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

Ответы

▲ 1

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