# Function Overloading Usually the function name tends to reflect its main purpose. As a rule, readable programs contain various well selected [identifiers](/en/docs/basis/syntax/identifiers). Sometimes different functions are used for the same purposes. Let's consider, for example, a function that calculates the average value of an array of double precision numbers and the same function, but operating with an array of integers. Both are convenient to be called AverageFromArray: ``` //+------------------------------------------------------------------+ //| The calculation of average for an array of double type           | //+------------------------------------------------------------------+ double AverageFromArray(const double & array[],int size)   {    if(size<=0) return 0.0;    double sum=0.0;    double aver; //---    for(int i=0;i