Although the default arguments of a function must appear in its declaration, they are not considered part of its type. Thus, you cannot overload a function by using different default arguments:
void f(int n = 6); void f(int n = 0); //error, redefinition of f() above
The attempt to overload f() is illegal because the compiler cannot distinguish between the two versions of f().