2011-12-07 31 views
4

我知道函数原型不需要具有与参数关联的名称。例如:函数定义中的未命名参数

void foo(int, std::string); 

我很感兴趣,找出最近,你可以做一个函数定义同样的事情,但:

void* foo(void*) { std::cerr << "Hello World!" << std::endl; } 

为什么这项工作,怎么可能你曾经使用的未命名参数?是否有这个原因是允许的(比如可能在处理传统接口或其他方面)?

回答

7

如果你不打算使用这个参数,那么这是一个防止编译器警告你的好方法。

这确实在满足界面的情况下经常出现。例如。您可能会覆盖基类方法,但对参数没有用处。

+4

或者执行改变了,参数不再需要,但是你不想破坏ABI /旧客户端。 –

+0

另一个常见的情况是回调和/或函数指针。 – IronMensan

+0

谢谢:)有道理。 –