Is a function with default values an overloaded function?
No. Overloads look like
Fraction();
Fraction(int numerator);
Fraction(int numerator, int denominator);
and have each their own implementation (definition), while a function with default parameters has a single implementation.
I thought it's only one, but they suggested there are 3: ...
"How many constructors does the class Fraction have?"
It's a trick question, designed to fool you showing the available call variants for a single constructor declaration.
The definite answer for the given code snippet is 3 (in words three).
There's one specialized constructor (which serves three variants of calling), and the compiler generates a copy and move constructor automatically if you don't delete
them, or provide a custom implementation:
Fraction(int numerator = 0, int denominator = 1); // (1)
// Redundant, just for demonstration:
Fraction(const Fraction& rhs) = default; // (2)
Fraction(Fraction&& rhs) = default; // (3)
So for such exam, if you will answer
The class has one constructor
That's wrong anyways. If you will answer
The class has three constructors (as you wrote that is the accepted answer)
you'll need to explain in depth, why you think so (as explained above).
In any oral exam I'd ask you to backup why exactly, so I'd do in an apprentice test.