@sddvxd

Зачем в производных классах делать виртуальную функцию?

Добрый день!

Иногда натыкаюсь на примеры такого вида:

class BaseABC{
public:
    virtual void test()const = 0;
...
}

class Heir : public BaseABC{
public:
    virual void test()const;
...
}


Зачем в производном классе делать переопределенную функцию виртуальной? Это делается для того, чтобы наследник Heir мог переопределить test? Если я захочу вызвать так:

//head.h
class TooHeir : public Heir{
public:
    void test()const;
...
}

//realize.cpp

void TooHeir::test()const{
std::cout<<"Invoked test() of object \"TooHeir\"";
}

//main.cpp

TooHeir * pth = new TooHeir;
pth->test();


В итоге вот какой вопрос: виртуальные функции действуют только на 1 уровень наследования? Насколько я знаю, деструкторы действуют на бесконечное количество цепочек наследования BaceABC->Heir->TooHeir->...
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
@sddvxd Автор вопроса
Разобрался благодаря статье https://msdn.microsoft.com/ru-ru/library/0y01k918.aspx
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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