这是一个非常简单的问题,使我感到奇怪。 考虑以下法典:
#include <iostream>
int three()
{
return 3;
}
void foo(int func(void))
{
std::cout << func() << std::endl;
}
void bar(int (*func)(void))
{
std::cout << func() << std::endl;
}
int main()
{
foo(three);
bar(three);
return 0;
}
// output:
// 3
// 3
你可以看到,我们有两个职能,作为唯一的理由,承担另一个职能。 然而,其功能原型各不相同。 基本上,我们有<条码> 避免 foo(int func(ave))和<条码> 避免条码(int (*func)(ave)。 首先,它像<代码>foo<>/code>正在发挥这一功能,<编码>bar<>/code>正在担任一项职务。
However, they both produce the exact same results, and have the exact same body, and are called in exactly the same manner.
My question is, is there an actually hidden difference between foo
and bar
? Is this simply an optional syntax in C++? Is one of the two cases considered "bad style" in C++?
如果我的编辑是一个促成因素,则使用“视力”演播室的Im。