The word polymorphism means having many forms.
Typically, polymorphism occurs when there is a hierarchy of classes and they are related by inheritance. The reason for the incorrect output is that the call of the function area is being set once by the compiler as the version defined in the base class.
This is called static resolution of the function call, or static linkage - the function call is fixed before the program is executed.
This is also sometimes called early binding because the area function is set during the compilation of the program.
Polymorphism in C++ and Virtual Functions / Methods - CPP Video Tutorial
This time, the compiler looks at the contents of the pointer instead of it's type. As you can see, each of the child classes has a separate implementation for the function area. This is how polymorphism is generally used.
You have different classes with a function of the same name, and even the same parameters, but with different implementations. A virtual function is a function in a base class that is declared using the keyword virtual.
Defining in a base class a virtual function, with another version in a derived class, signals to the compiler that we don't want static linkage for this function. What we do want is the selection of the function to be called at any given point in the program to be based on the kind of object for which it is called.
This sort of operation is referred to as dynamic linkage , or late binding. It is possible that you want to include a virtual function in a base class so that it may be redefined in a derived class to suit the objects of that class, but that there is no meaningful definition you could give for the function in the base class.
Next Page. Live Demo.
Previous Page Print Page.