Задать вопрос
@kyklaed

Наследование оператора присваивания (=), как это сделать?

Добрый день! пишу второй вопрос по это теме. не понимаю в чем проблема.

Есть родительский класс, в нем переопределенный оператор присваивания !
есть класс наследник- я хочу в нем унаследовать переопределенную функцию присваивания !

class Test; - родитель
clss Test2; - сынок

int main()
{
Test t(10);
Test2 t2(20);

я хочу присвоить вот так t2 = t
t = t2 - нормально присваивается
объясните как это сделать, !
  • Вопрос задан
  • 1144 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Почему не прописывается автоматически? А потому что в Test2 будет больше полей, и никто, кроме вас, программиста, не знает, что с ними делать.

Но никто не мешает самому написать операцию =, например.
class Test2 : public Test
{
private:
  typedef Test Super;
public:
  Test2& operator = (const Test& x);
};

Test2& Test2::operator = (const Test& x)
{
  Super::operator = (x);
  // придумай, что сделать с недостающими полями
  return *this;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы