我真的可以像这样使用函数重载吗:
#include <iostream>
void foo(...)
{
std::cout << "::foo(...) \n";
}
void foo(int)
{
std::cout << "::foo(int) \n";
}
int main()
{
foo(0);
foo('A');
foo("str");
foo(0, 1);
}
关于它的标准是什么?在什么样的情况下我会得到::foo(...)?
最佳答案
void foo(int)
将接受一个 int
类型的参数。
void foo(...)
接受任意数量、任意类型的参数。当调用没有单个 int
参数时,它将被选中。一般来说,用处不大。
另请注意,将类类型的对象传递给 ...
是未定义的行为。
关于c++ - 带省略号的函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436557/