Polymorphism lets you call the correct function based on the actual object type at runtime, not the pointer or reference type. A base pointer to a derived object calls the derived version.
With This requires virtual functions. Without Understanding this concept deeply will help you write better code. Practice with examples until the pattern becomes automatic. Review earlier sections if anything is unclear.
Building on solid foundations makes advanced topics easier.