[ERROR]
Because virtual functions are called only for objects of class types, you cannot declare global functions or union member functions as 'virtual'.
virtual void f(void); // ERROR: definition of a global
// virtual function.
union U {
virtual void f(void); // ERROR: virtual union member
// function
};
Do not declare a global function or a union member function as virtual.