Предположим, у меня есть виртуальная функция foo () в классе B, и мне нужно немного другое поведение в одном из производных классов B, классе D. Можно ли создать переопределяющую функцию D :: foo () и вызвать B: : foo () оттуда, после особого случая лечения? Как это:
void D::foo()
{
if (/*something*/)
// do something
else
B::foo();
}
Я не спрашиваю, сработает ли это, я знаю, что это сработает. Я хочу знать, правильно ли это с точки зрения хорошего OOD.