c++ - 带省略号的函数重载

标签 c++

我真的可以像这样使用函数重载吗:

#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/

相关文章:

c++ - 将带 alpha beta 剪枝的 minimax 转换为 negamax

c++ - 如何可靠地强制对对象的方法进行虚拟调度?

C++解压缩一个gzip字节数组

C++ 循环和声明函数

c++ - 静态库,链接到共享库

c++ - 为什么 MPI_Send 调用累积时 MPI_Recv 会失败

c++ - FLTK:如何通过拖动使小部件可调整大小?

c++ - C++ 中的 libcurl : converting URL to some weird symbols

c++ - GDB:[无可用资源]

c++ - 在子类中调用父函数