default argument in C++

* When Function overloading is done along with default values, then we need to make sure it will not be ambiguous.  The compiler will throw an error, if ambiguous. 
* With default arguments, we cannot skip an argument in the middle. Once an argument is skipped, all the following arguments must be skipped. 
```
#include <iostream>
using namespace std;
 
int sum(int x, int y, int z = 0, int w = 0)
{
    return (x + y + z + w);
}
int sum(int x, int y, float z = 0, float w = 0)
{
    return (x + y + z + w);
}

int main()
{
    cout << sum(10, 15) << endl; //ambiguous
    return 0;
}
```