函数参数之间的差异
difference between function parameters
在函数的参数中,我想传递一个默认参数,该参数是函数模板。我试图破解的是下面函数中(*cmp)或(cmp)之间的区别:
template <typename Type>
int Foo(some var, int (*cmp)(Type one, Type two) = FunctTemplate) { ...
我习惯于把*看作一个指针声明。。。这是指向函数FunctTemplate的指针吗?为什么不管我怎么写(astrik或no astrik),程序都能正常工作?
类型不相同,但在函数声明中用作参数类型时没有区别。
在int (*cmp)(Type, Type)
中,cmp
具有指向函数类型(或"函数指针"类型)的指针。
在int (cmp)(Type, Type)
中,cmp
具有函数类型(即,它根本不是指针类型)。
然而,C和C++都有一个规则,即任何具有函数类型的参数都会隐式转换为相应的函数指针类型,就像任何具有数组类型的参数也会隐式转化为相应的指针类型一样。
相关文章:
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- C++模板参数之间的比较似乎被忽略了
- 在不同的模板参数包之间分发非类型参数包
- 折叠表达式和参数包:static_assert 内 Args&& 和 Args 之间的区别
- 将函数作为参数传递的两种方式之间的区别
- C++ 和 Lua 函数之间的交互与 3D 矢量参数
- 大括号和括号之间的参数计算顺序
- RVALUE参考与const lVALUE参考作为参数之间的混淆
- 有没有办法根据模板参数的类型在不同的类实现之间进行选择
- 使用运行时参数与编译时参数在类之间共享代码
- Rcpp 中值和引用参数之间的差异
- 作为参数的'char *args[]'和'char **argv'之间的差异
- By-ref 参数:这是 std::thread 和 std::bind 之间的不一致吗?
- 是否可以找到两个模板参数之间表达式的类型
- 函数参数和临时变量之间复制构造函数的奇怪行为
- 有没有一种方法可以在基于枚举的可变参数模板函数之间进行选择,这比将函数包装在结构中更简单
- 从 1 中创建新的字符 * 作为参数,元素位于 2 个索引之间
- C - 编译器如何以参数为参数的过载函数在超载函数之间决定
- 在UWP页面之间传递参数的正确方法