На самом деле это не ответ, а вопрос с практическими рекомендациями. Это почему-нет.
Классы должны что-то значить. Должны быть полезные вещи, которые вы можете сказать о любом правильно сформированном объекте в классе («инварианты класса»), потому что таким образом вы можете рассуждать о программах на основе того, как работает класс. Если класс - это просто набор элементов данных, вы не можете этого сделать, и вам нужно рассуждать о программе на основе каждого отдельного элемента данных.
Предлагаемый оператор присваивания изменит каждый элемент данных в базовом классе, но не коснется тех, которые определены в дочернем классе. Это означает одну из двух вещей.
Если дочерний объект правильно сформирован после того, как другой базовый объект выгружен в его базовый компонент, это означает, что дополнительные элементы данных не имеют реального соединения с базовыми элементами данных. В этом случае Child на самом деле не является подтипом Base, а публичное наследование - неправильное отношение. Ребенок не имеет отношения «есть» к «Базе», а скорее имеет отношение «имеет». Обычно это выражается композицией (у ребенка есть элемент базовых данных), а также может быть выражено частным наследованием.
Если дочерний объект не правильно сформирован после того, как другой базовый объект выгружен в его базовый компонент, предложенный оператор присваивания является действительно быстрым и удобным методом для изменения переменной.
Для примера давайте возьмем базовый класс млекопитающих и два дочерних класса, китообразные и летучие мыши. У животных есть такие вещи, как размер и вес, а у детских классов есть поля, связанные с тем, что они едят и как они двигаются. Мы назначаем китообразного млекопитающему, что разумно (все специфичные для китообразных поля только что отброшены), и теперь мы назначаем этого млекопитающего летучей мыши. Внезапно у нас летучая мышь весом двадцать тонн.
С хорошо разработанным набором классов я могу представить себе этот оператор присваивания единственно возможным, если у дочерних классов нет дополнительных элементов данных, только дополнительное поведение, и даже тогда это подозрительно.
Поэтому мой единственный совет - переделать дизайн вашего класса. Многие люди, особенно знакомые с Java и другими языками, склонными к глубокой иерархии наследования, слишком часто используют наследование в C ++. C ++ обычно лучше всего работает с большим количеством базовых классов и относительно мелкой иерархией.