12 из 100 вопросов — случайная выборка · Ответьте на все и узнайте свой результат
C++ · Operator Overloading
Почему перегруженный оператор присваивания должен проверять самоприсваивание, а конструктор копирования обычно этого делать не должен?
Оператор присваивания работает с уже инициализированным объектом, который может владеть ресурсами, поэтому присваивание ему самому себя может освободить эти ресурсы до их копирования
Самоприсваивание — это ошибка компиляции для конструктора копирования, но не для оператора присваивания
Конструктор копирования всегда выполняет глубокое копирование, поэтому самоприсваивание безопасно по умолчанию
Оператор присваивания вызывается для временного объекта, что делает самоприсваивание неопределённым поведением