Копирование унаследованной части в перегрузке оператора присваивания потомка
Есть базовый абстрактный класс
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);