Это имеет смысл, когда это имеет смысл с точки зрения дизайна.Например, я ожидаю, что классы Rect
, Size
и Point
будут поддерживать присваивание.В этом смысле эти типы (для меня) должны вести себя как обычные типы данных (POD).
Но если бы я моделировал моделирование движения на легковых и грузовых автомобилях, у меня точно не было бы оператора назначения.Настроить одну машину на равную другую просто не имеет никакого смысла.Я мог бы clone
машину (сделать новую, которая будет выглядеть точно так же, как другая), но после создания машины она всегда будет этой машиной.Он не может стать другим видом автомобиля.
В качестве еще одного примера рассмотрим объект Person
:
class Person
{
private:
std::string m_Name;
};
Ожидаете ли вы Person
иметь оператор присваивания?Нет. Человек не может стать другим человеком.Однако как насчет его имени?Конечно!Человек может изменить свое имя, поэтому оператор присваивания имени имеет смысл.
Поэтому, чтобы ответить на ваш вопрос, имеет смысл сделать это там, где это имеет смысл:)