C++ static 函数的定义、使用,参数只有类型,没有形参是什么情况?

2025-06-22 18:37:12
推荐回答(2个)
回答1:

static void myGaussianBlur(int, void *);

//函数声明里的形参可以不写,只要定义时参数类型不变就不算重载,仍是一个函数

createTrackbar("Kernel: ","Gaussian", &iGaussianBlur, 40, myGaussianBlur);

//这句是把函数地址当作参数传入,是函数指针的用法,没有什么问题

static void myGaussianBlur(int, void *)//函数定义没有形参?还能这么写?

//有些时候形参只是个象征意义,比如重载++运算符里就是这种写法

//这个函数实现回调,但是没有严格按照回调的参数调用,应该在其他地方有全局变量srcImage, dstImage3等,所以不用形参也可以。

typedef void(*TrackbarCallback)(int pos, void* userdata);//不知道这是什么东东

//这就是声明函数指针类型的方法,去查查函数指针这么用就清楚了

下面写了一个例子,也是用的全局参数,没通过形参传入

#include  
int y=10;
static void myAdd(int &)
{
y++;
}
typedef void (*ADDFUN)(int&);
void show(int val,ADDFUN f)
{
f(val);
std::cout< std::cout<}

int main()
{
show(2,myAdd);
return 0;
}

回答2:

在哪看到这段代码,为什么认为它是正确的……