<P> In object - oriented programming, in languages such as C++, and Object Pascal, a virtual function or virtual method is an inheritable and overridable function or method for which dynamic dispatch is facilitated . This concept is an important part of the (runtime) polymorphism portion of object - oriented programming (OOP). In short, a virtual function defines a target function to be executed, but the target might not be known at compile time . </P> <P> The concept of the virtual function solves the following problem: </P> <P> In object - oriented programming, when a derived class inherits from a base class, an object of the derived class may be referred to via a pointer or reference of the base class type instead of the derived class type . If there are base class methods overridden by the derived class, the method actually called by such a reference or pointer can be bound either' early' (by the compiler), according to the declared type of the pointer or reference, or' late' (i.e., by the runtime system of the language), according to the actual type of the object referred to . </P> <P> Virtual functions are resolved' late' . If the function in question is' virtual' in the base class, the most - derived class's implementation of the function is called according to the actual type of the object referred to, regardless of the declared type of the pointer or reference . If it is not' virtual', the method is resolved' early' and the function called is selected according to the declared type of the pointer or reference . </P>

When do we need virtual functions in c++