This document summarizes a lecture on object-oriented programming and virtual functions in C++. It discusses:
1) The difference between static and dynamic binding, and how virtual functions allow for dynamic/late binding by performing function binding at runtime based on the object's type.
2) An example showing that without virtual functions, calling a function through a base class pointer results in the base class function being called rather than the derived class function.
3) How declaring a function as virtual in the base class allows the correct overridden function to be called in the derived class when called through a base class pointer, enabling polymorphism.