UDFs support function name overloading: you can define several functions that have the same name but are different from each other in such a way to make each function unique.
The name that is overloaded is specified in the CREATE FUNCTION statement as the name to use to invoke the UDF from an SQL statement. You must provide a unique C or C++ function for each UDF with the same name.
You can also overload functions of different classes (scalar, aggregate, and table). That is, a scalar function can have the same name as an aggregate function within the same database as long as the two functions are unique.