objects of virtual classes are usually created by some
kind of server or class factory. The client only receives
a reference (pointer) to the object from the server and only knows
how to invoke its methods. It assumes no knowledge of its inner workings.