c++ - 在 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.
我希望它应该抛出错误,比如未定义函数调用。
解决方案
您将函数作为变量传递,而不执行函数(不执行()
)
它将被调用,但那是因为li.merge
稍后会在其逻辑中的某个地方调用它。当您将它作为参数传递时,它不会被直接调用。
推荐阅读
- c++ - 在 C++ 中使用 XGBoost 时未定义的符号
- c# - IHostLifetime 是否有 MacOS (launchd) 实现?
- firebase - 在 Firestore 中花费大量读取
- android - FirebaseVision,机器学习套件 FirebaseVisionTextRecognizer CUSTOM MODEL OCR for Android
- linux - 关于linux分段错误的mupdf
- rust - 生锈的冲突寿命
- c# - 如何使用 Array.CreateInstance() 方法正确初始化数组
- javascript - 我们如何在 Amcharts 的系列名称上添加工具提示?
- matplotlib - 无法在 QWidget 上绘制 NavigationToolbar
- angular - asp net core 3.1 angular windows 身份验证需要用户名和密码