通过引用或值传递函数?

时间:2012-08-28 16:45:19

标签: c++ stl

#include <iostream>
#include <algorithm>
using namespace std;

bool myfn(int i, int j) { return i<j; }



int main () {
int myints[] = {3,7,2,5,6,4,9};

 // using function myfn as comp:
cout << "The smallest element is " << *min_element(myints,myints+7,myfn) << endl;
cout << "The largest element is " << *max_element(myints,myints+7,myfn) << endl;

return 0;
}

考虑到上述代码,如果我们将myfn&myfn传递给min_element,会有什么不同吗?当我们试图传递一个更为标准的仿函数时?

2 个答案:

答案 0 :(得分:9)

通常,pass-by-reference和pass-by-value仅指传递变量,而不是函数。 (模板函数引入了一些复杂性,但这是另一个讨论。)在这里,您将myfn作为指向函数的指针传递。如果您使用&myfn,则没有区别。编译器将隐式地将myfn转换为指向具有该名称的函数的指针。

答案 1 :(得分:6)

  

如果我们将myfn或&amp; myfn传递给min_element有什么区别吗?

没有。无论如何,myfn被隐式转换为指向函数的指针。所以没有任何区别。