When you design your application, you need to decide how you will use the functions you will define:
If a function is general-purpose and applies throughout an application, make it a global function.
If a function applies only to a particular kind of object, make it an object-level function. You can still call the function from anywhere in the application, but the function acts only on a particular object type.
For example, suppose you want a function that returns the contents of a SingleLineEdit control in one window to another window. Make it a window-level function, defined in the window containing the SingleLineEdit control. Then, anywhere in your application that you need this value, call the window-level function.
Multiple objects can have functions with the same name Two or more objects can have functions with the same name that do different things. In object-oriented terms, this is called polymorphism. For example, each window type can have its own Initialize function that performs processing unique to that window type. There is never any ambiguity about which function is being called, because you always specify the object's name when you call an object-level function.
Object-level functions can also be overloaded—two or more functions can have the same name but different argument lists. Global functions cannot be overloaded.