函数指针的使用

  1. 调用Lambda函数

    Lambda函数只是对函数的定义和声明,但无法进行调用,只能通过函数指针来实现。

1
2
3
4
5
6
//方式一:函数指针
void (*fp) () = [](){cout<< "Hello World!";};
fp();

//方式二:通过Lambda函数后面添加()直接运行。
[](){cout<< "Hello World!";}();
  1. QT的信号和槽中,使用函数指针来避免重载导致的信号和槽多义性。
1
2
3
4
5
6
7
8
//方式一:函数指针
void (teacher::*hungeryFun)(QString) = &teacher::hungery;
void (student::*treatFun)(QString) = &student::treat;
connect(tea,hungeryFun,stu,treatFun);
//方式二:强制static_cast类型转换
connect(tea,
static_cast<void (teacher::*)()>(&teacher::hungery),stu,
static_cast<void (student::*)()>(&student::treat));