Как вызвать функцию потомка с таким же именем как у родителя (С++)? Недавно начала изучать ООП. Но вот что-то не получается разобраться в этом вопросе. Вот примерный код программы. Как сделать так, чтобы в мэйне вызывалась функция потомка, а не родителя?class tparent
{
...
public:
...
void getdata()
{
...
}
};
class tchild:public tparent
{
...
public:
void getdata()
{
...
}
};
void main()
{
tchild ob;
ob.getdata();
}

21 Авг 2019 в 07:06
198 +1
0
Ответы
1

Для вызова функции потомка с таким же именем как у родителя, необходимо использовать спецификатор доступа virtual в определении функции в родительском классе. В данном случае функция getdata() должна быть объявлена как виртуальная в классе tparent, чтобы затем в классе tchild переопределить эту функцию.

Пример исправленного кода:

class tparent
{
public:
virtual void getdata() // объявляем функцию как виртуальную
{
...
}
};
class tchild : public tparent
{
public:
void getdata() override // переопределяем функцию
{
...
}
};
int main()
{
tchild ob;
ob.getdata(); // будет вызвана функция из класса потомка
return 0;
}

При такой реализации функция getdata() из класса потомка будет вызываться при вызове из объекта ob.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир