I want to know what a \"virtual base class\" is and what it means.
Let me show an example:
class Foo
{
public:
void DoSomething() { /* .
A virtual base class is a class that cannot be instantiated : you cannot create direct object out of it.
I think you are confusing two very different things. Virtual inheritance is not the same thing as an abstract class. Virtual inheritance modifies the behaviour of function calls; sometimes it resolves function calls that otherwise would be ambiguous, sometimes it defers function call handling to a class other than that one would expect in a non-virtual inheritance.