Overloading Functions with Default Arguments

Can I overload functions that differ only in their default arguments?

No, you cannot overload functions that differ only in their default arguments. If you try to do this, you will get a compilation error due to ambiguity. For example:

#include <iostream>

void Print(int x) {
  std::cout << "Print(int)";
}

void Print(int x, int y = 0) {
  std::cout << "Print(int, int)";
}

int main() {
  Print(10);// error: ambiguous call
}
error: 'Print': ambiguous call to overloaded function

In this case, both Print(int) and Print(int, int) are equally valid for the call Print(10), because the second parameter of Print(int, int) has a default value. This creates an ambiguity, and the compiler will emit an error.

To avoid this, ensure that your overloaded functions differ in their parameter types or number of parameters, not just in their default arguments.

Understanding Overload Resolution

Learn how the compiler decides which function to call based on the arguments we provide.

Questions & Answers

Answers are generated by AI models and may not have been reviewed. Be mindful when running any code on your device.

Passing Non-Const References to Overloaded Functions
Why does the compiler prefer a non-const reference parameter over a const reference when I pass a non-const variable?
Debugging Overload Resolution Failures
How can I debug a situation where the compiler is not selecting the overload I expect it to?
Overload Resolution with Function Templates
How does overload resolution work when there are both function templates and non-template functions?
Overloading on const-ness of Parameters
Can I overload a function based on whether a parameter is const or non-const?
Overloading on const-ness of *this
Can I overload member functions based on the const-ness of the object they're called on?
Overloading in Derived Classes
If I overload a function in a base class, can I also overload it in a derived class?
Or Ask your Own Question
Get an immediate answer to your specific question using our AI assistant