This document discusses polymorphism in C++. Polymorphism means an operator or function can take on multiple forms. C++ supports two types of polymorphism: compile-time and runtime. Compile-time polymorphism, also called static binding, includes function overloading and operator overloading where the version to call is determined at compile time based on arguments. Runtime polymorphism, also called dynamic binding, uses virtual functions where the target object and method are not known until runtime.