Не понимаю, почему просто не разрушать объект, вызывая его деструктор, и после вызывать конструктор копирования. Зачем нужно переопределять оператор "="? Понимаю еще "=+" и подобные. Но просто "=" — это же по сути отказ от старого объекта? Тем более что разумно автоматически возвращать сам этот объект в операторе "=", а с этим компилятор должен справиться без проблем. То есть 1) Разрушаем старый объект, 2) Вызываем нужный конструктор копирования, 3) Если нужно, возвращаем новый объект (если у нас a = b = c). Почему же тогда не так?