In your last edit, you introduced a syntax error: I doubt that void f(double = 0, double = 5, int ) will compile without complaints. (Last parameter without default!)
Don't change the original question into another one completely different. It makes the already given answers obsolete. Writing "read the question again" is not sufficient.
void f(double = 0, double = 5, int )will compile without complaints. (Last parameter without default!)void f(int x, int y);andvoid f(double, double, int)... are unrelated. Read about polymorphism -> Overloading concerning this.