Functions with different parameter lists, but the same name - Compiler looks at types of arguments, function definition/prototype, decides which version to use - Return type not considered by compiler - Polymorphism -> same concept in different application ## [[C++]] ```c // prototypes int add_numbers(int, int); double add_numbers(double, double); int main() { cout << add_numbers(10, 20) << endl; cout << add_numbers(10.0, 20.0) << endl; return 0; } // definitions int add_numbers(int a, int b) { return a + b; } double add_numbers(double a, double b) { return a + b; } ```