C++:如何将参考函数传递给另一个函数?
我一直在阅读函数指针,并将它们用作其他函数的参数。我的问题是如何通过引用传递函数而不使用指针?我一直试图在互联网上找到答案,但我没有找到一个好的答案。我知道你可以像这样通过引用传递变量:void funct(int& anInt);
。你会如何做类似于此的事情,而不是对变量的引用,而是对参数的引用?另外你将如何使用函数体中的函数引用?C++:如何将参考函数传递给另一个函数?
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
干杯&心连心,
出于好奇,我为什么要使用对函数的引用而不是指向函数的指针? – fredoverflow
@FredOverflow:由于指针可能为空或无效。一个引用保证它是有效的而不是空的(没有空引用),否则在程序中有错误。 –
@Alf P. Steinbach:“或者说程序中有错误”理论上听起来不错,但如果你有'sometype&ref = * ptr'之类的东西,'指针中的地址将被简单地复制到地址中在引用中,可能是无效的或为空。您可能会说,当'ptr'无效或为空时,上面的语句是未定义的行为,但在编译或运行时不会有任何迹象表明,所以程序员仍然需要确保它有效且非空,与使用指针相同。所以我说程序员没有任何区别。 – newacct
注意:您不能传递功能。您只能传递引用或指向函数的指针。 –