gpt4 book ai didi

c++ - 功能参数之间的区别

转载 作者:行者123 更新时间:2023-11-30 03:03:07 27 4
gpt4 key购买 nike

在函数的参数中,我想传递一个作为函数模板的默认参数。我试图破译的是以下函数中 (*cmp) 或 (cmp) 之间的区别:

template <typename Type>
int Foo(some var, int (*cmp)(Type one, Type two) = FunctTemplate) { ...

我习惯于将 * 视为指针声明...这是指向函数 FunctTemplate 的指针吗?为什么无论我如何编写程序(astrik 或无 astrik)程序都能正常工作?

最佳答案

类型不一样,但是在函数声明中作为参数类型时没有区别。

int (*cmp)(Type, Type) 中,cmp 具有指向函数的指针类型(或“函数指针”类型)。

int (cmp)(Type, Type) 中,cmp 具有函数类型(即,它根本不是指针类型)。

但是,C 和 C++ 都有一个规则,任何具有函数类型的参数都隐式转换为相应的函数指针类型,就像任何具有数组类型的参数都隐式转换为相应的指针类型一样。

关于c++ - 功能参数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com