Добрый день!
Иногда натыкаюсь на примеры такого вида:
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->...