2011-08-22 260 views
8

我一直在阅读函数指针,并将它们用作其他函数的参数。我的问题是如何通过引用传递函数而不使用指针?我一直试图在互联网上找到答案,但我没有找到一个好的答案。我知道你可以像这样通过引用传递变量:void funct(int& anInt);。你会如何做类似于此的事情,而不是对变量的引用,而是对参数的引用?另外你将如何使用函数体中的函数引用?C++:如何将参考函数传递给另一个函数?

+0

注意:您不能传递功能。您只能传递引用或指向函数的指针。 –

回答

22
#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); 
} 

干杯&心连心,

+1

出于好奇,我为什么要使用对函数的引用而不是指向函数的指针? – fredoverflow

+10

@FredOverflow:由于指针可能为空或无效。一个引用保证它是有效的而不是空的(没有空引用),否则在程序中有错误。 –

+4

@Alf P. Steinbach:“或者说程序中有错误”理论上听起来不错,但如果你有'sometype&ref = * ptr'之类的东西,'指针中的地址将被简单地复制到地址中在引用中,可能是无效的或为空。您可能会说,当'ptr'无效或为空时,上面的语句是未定义的行为,但在编译或运行时不会有任何迹象表明,所以程序员仍然需要确保它有效且非空,与使用指针相同。所以我说程序员没有任何区别。 – newacct

相关问题