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

21 Авг 2019 в 07:06
217 +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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир