【发布时间】:2021-08-14 10:08:04
【问题描述】:
我有两个具有相同名称和默认参数的函数,但是当我同时调用它们时会出错。
#include <iostream>
using namespace std;
void add(int x=2,int y=4){
cout<<x+y<<endl;
}
void add(int x=2, int y=14, int z=12)
{
cout<<x+y+z<<endl;
}
int main(){
add(5,9);
add(2,3,6);
return 0;
}
【问题讨论】:
-
应该调用哪个函数?
-
如果你想让
add(x,y)总是调用第一个重载,为什么第二个重载需要默认参数? -
同样的问题已经被问过enter link description here
-
我当然不希望这些值非零。我希望结果是所有提供值的总和。如果你想实现这个,可以通过
template<typename ...Ts> void add(Ts...args) {std::cout<<(args + ... + 0) << '\n';}为每个变体使用不同的功能。 -
错误是什么? (它可以帮助有相同错误的人在将来找到这个问题。)
标签: c++ overloading default-arguments