### Restrictions on Overloaded Functions

- Functions that differ only in return type cannot have the same name.
- Two member functions that differ only in that one is declared with the keyword static cannot have the same name.
- A typedef is a synonym for another type, not a separate type. The following two declarations of spadina() are declarations of the same function:

            typedef int I;
            void spadina(float, int);
            void spadina(float, I);

- A member function of a derived class is not in the same scope as a member function in a base class with t he same name. A derived class member hides a base class member with the same name.
- Argument types that differ only in that one is a pointer* and the other is an array[] are identical. The following two declarations are equivalent:

            f(char*);
            f(char[10]);

Array
Member Functions
Derived Class
Pointer