The document discusses two types of polymorphism in C++: compile-time polymorphism and runtime polymorphism. Compile-time polymorphism includes function overloading and operator overloading, where the function called is determined at compile time. Runtime polymorphism uses function overriding, where the function called is determined at runtime based on the object type. Examples are given of each using class inheritance and function definitions.