| class EmployeeInterface { public: virtual  EmployeeInterface() { } virtual void getEmployeeType(void) = 0; }; | 
| class Employee : public virtual EmployeeInterface {...}; class Empowered : public Employee, public virtual EmployeeInterface {...}; class Manager : public Empowered, public virtual EmployeeInterface {...}; | 
| void use(EmployeeInterface* e) {...} ... use(&e1); // output: Employee use(&e2); // output: Empowered use(&e3); // output: Manager |