Firstly, regarding the last paragraph, yes, you are absolutely right.
Further, for the main question:
, . , , B A, B::doStuff() . .
. , , C - A, , D (sibling of C) , . :
class A
{
private:
void doAStuff();
public:
virtual void doStuff()
{
doAStuff();
}
void doAStuffAndStuff();
{
doAStuff();
doStuff();
}
}
class B : A
{
public:
virtual void doStuff();
}
class C : B
{
public:
virtual void doStuff();
}
. , A* a, A:
doStuff() , doStuff().doStuff() , , A, doAStuffAndStuff().
. , , .