Копирование унаследованной части в перегрузке оператора присваивания потомка

Есть базовый абстрактный класс

class entity {
protected:
    int x1;
    int x2;
    int y1;
    int y2;

    entity(int x1, int x2, int y1, int y2);

...
}

А также его конкретный потомок, с перегрузкой конструктора копирования, оператора присваивания и деструктора.

class item : public entity {
    char* name;
public:
    item(int x1, int x2, int y1, int y2, const char* name);
    item(const item& anotherItem);
    item& operator=(const item& anotherItem);
    ~item;
...
}

Реализация перегрузки оператора присваивания

item& operator=(const item& anotherItem) {
    x1 = anotherItem.x1;
    x2 = anotherItem.x1;
    x3 = anotherItem.x1;
    x4 = anotherItem.x1;

    //Далее глубокое копирование char*
}

Итак. Очевидно, что при реализации конструктора копирования будет : entity(x1, x2, y1, y2) {...}, что заметно сократит код. В перегрузке же оператора присваивания так сделать нельзя и приходится руками копировать все координаты. Как можно этого избежать и сразу скопировать родительскую часть потомка?


Ответы (1 шт):

Автор решения: user7860670

можно вызвать оператор присваивания предка entity::operator =(anotherItem);

→ Ссылка