Function overloading in C++ allows multiple functions to have the same name but different parameters. This allows functions that perform similar actions on different types of data to be distinguished at compile-time based on their parameters. The compiler determines which overloaded function to call based on the types and number of arguments passed. Function overloading is an example of static or compile-time polymorphism since the function called is resolved at compile-time rather than run-time.