(C ++) Вызов базового оператора из оператора производного класса

0

Каков правильный способ вызова оператора из оператора производного класса?

Я пытаюсь вызвать базовый перегруженный оператор из перегруженного оператора производного класса. Я попробовал следующее, но он не работает:

const myObject& myObject::operator = (const myObject &otherObject) {
static_cast<BaseType>(*this) = static_cast<BaseType>(otherObject); // assuming BaseType has assignment overloaded
return *this;
}

Это фактический код:

const studentType& studentType::operator = (const studentType &student) {
  static_cast<personType>(*this) = static_cast<personType>(student);

  // new junk here

  return *this;
}

Примечание. Оператор базового класса перегружен, поэтому проблем нет.

  • 0
    Вы, вероятно, имеете в виду overridden не overloaded
  • 0
    насколько я понимаю, это считается перегруженным, когда подпрограмма имеет несколько определений, каждое из которых имеет разные параметры.
Показать ещё 1 комментарий
Теги:
polymorphism
operator-overloading

1 ответ

0
Лучший ответ

Используйте следующий код

const studentType& studentType::operator = (const studentType &student) {
  personType::operator =(student);

  // new junk here

  return *this;
}
  • 0
    Да, это сработало, и на удивление это имеет большой смысл, так как operator = - это просто еще одна функция / метод / рутина. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню