首页 > 解决方案 > 在 list merge() 中如何调用没有 '()' 比较函数?

问题描述

'compare' 是一个函数,在将它作为参数传递时,不使用函数调用括号,仍然调用函数。为什么?

我试过int k = compare;了,但这引发了错误。我不知道发生了什么!

//compare function:
bool compare(int a, int b){
    return a<b;
}

// ... and in main() :
 li.merge(li1, compare); // where li and li1 are lists.

我希望它应该抛出错误,比如未定义函数调用。

标签: c++

解决方案


您将函数作为变量传递,而不执行函数(不执行()

它将被调用,但那是因为li.merge稍后会在其逻辑中的某个地方调用它。当您将它作为参数传递时,它不会被直接调用。


推荐阅读