A function prototype ... specifies the function's name and type signature, but omits the function implementation. specifies the function's implementation, but omits the function's name and type signature. creates multiple functions with different argument lists. is used as an initial example of a correct function signature. overloads an existing function to accept other argument types.