I guess the talk() function is behaving polymorphic, because its in each of the inherited classes.
No you are wrong according to what I have learn. There are
two types of polymorphism. Dynamic and static. Study them
Even overloading is also one category of polymorphism ,it's
static polymorphism. In java yes , but in C++ a non virtual
overriding is also a static polymorphism. Please correct me
if I wrong. I even not read this very carefully.
and the dynamic polymorphism is implemented using the virtual
keyword in the C++.
and there are many old "C" style of ways to implement the
dynamic polymorphism , shuch as function pointers . But now
in C++ use virtual functions is recommanded.
I wouldn't go as far to say that i am wrong, my answer was just too specific.
if you look at the talk() function, it is actually declared as virtual, so therefore it is an example of dynamic polymorphism.