The ony thing I know about virtual functions is that if you declare a function called "Hello()" as "Virtual" in a class called, for example, "Top" and you you derieve a class from the "Top", any function with the name "Hello()" in the derieved class will override the function "Hello()" of the "Top" class.
Is there anything else to know about virtual functions? They are heart of abstract-base classes thus they are the base of interface-based programming so as COM programming. But I am suspecting that using virtual functions (or interfaces) won't solve the problem of name-mangling or it'll change the layout of the class if you add something to it later, right?